nodejs process event

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);

// devtools 中不能调试