• err {Error} 未捕获的异常。
    • origin {string} 表明异常的来源(来自未处理的拒绝、或来自同步的错误)。 可以是 'uncaughtException''unhandledRejection'。 后者仅用于 [--unhandled-rejections] 标志被设置为 strictthrow 且有未处理的拒绝。

    当未捕获的 JavaScript 异常冒泡回到事件循环时,则会触发 'uncaughtException' 事件。 默认情况下,Node.js 会这样处理此类异常:打印堆栈跟踪到 stderr 并使用退出码 1 来退出,且会覆盖任何先前设置的 [process.exitCode]。 为 'uncaughtException' 事件添加句柄会覆盖此默认行为。 另外,如果在 'uncaughtException' 句柄中更改 [process.exitCode],则会使进程以提供的退出码退出。 否则,在存在这样的句柄的情况下,进程会以退出码 0 退出。

    1. process.on('uncaughtException', (err, origin) => {
    2. fs.writeSync(
    3. process.stderr.fd,
    4. `捕获的异常: ${err}\n` +
    5. `异常的来源: ${origin}`
    6. );
    7. });
    8. setTimeout(() => {
    9. console.log('这里仍然会运行');
    10. }, 500);
    11. // 故意引起异常,但不要捕获它。
    12. nonexistentFunc();
    13. console.log('这里不会运行');

    通过添加 'uncaughtExceptionMonitor' 事件监听器,可以监视 'uncaughtException' 事件但不覆盖默认的退出进程的行为。