nodejs process event

Tags
nodejswebapi
Created
Mar 2, 2017 4:09 AM

uncaughtException

处理了这个事件,nodejs 将不会自动退出;

Web 服务友好的错误处理机制应该满足三个条件:

1. 对于引发异常的用户,返回 500 页面 2. 其他用户不受影响,可以正常访问 3. 不影响整个进程的正常运行

很遗憾的是,保证 uncaughtException 不影响整个进程的健康运转是不可能的。当 Node 抛出 uncaughtException 异常时就会丢失当前环境的堆栈,导致 Node 不能正常进行内存回收。也就是说,每一次 uncaughtException 都有可能导致内存泄露。

'uncaughtException'的正确使用是在关闭进程之前对分配的资源(例如文件描述符,句柄等)执行同步清理。在'uncaughtException'后恢复正常操作是不安全的。

unhandledRejection:

Promise reject 时一个事件循环期间没有被处理触发;

rejectionHandled:

触发条件为,promise 触发了 unhandledRejection 事件,在一段时间后,promise 错误又被处理了,此时触发 rejectionHandled,比如:

var p = Promise.reject(2);

setTimeout(function(){

p.catch(function(e){

console.error('Catch in Promise', e);

});

}, 1e3);

web 也支持了:https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onrejectionhandled

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onunhandledrejection

// devtools 中不能调试

SuperMade with Super