事件:'uncaughtExceptionMonitor'
🌐 Event: 'uncaughtExceptionMonitor'
err<Error> 未捕获的异常。origin<string> 表示该异常是否来源于未处理的拒绝(unhandled rejection)或同步错误。它可以是'uncaughtException'或'unhandledRejection'。当异常发生在基于Promise的异步上下文中(或者Promise被拒绝)并且--unhandled-rejections标志设置为strict或throw(这是默认值)且拒绝未被处理时,或者当在命令行入口点的 ES 模块静态加载阶段发生拒绝时,会使用后者。
'uncaughtExceptionMonitor' 事件会在 'uncaughtException' 事件触发之前,或者通过 process.setUncaughtExceptionCaptureCallback() 安装的钩子被调用之前触发。
🌐 The 'uncaughtExceptionMonitor' event is emitted before an
'uncaughtException' event is emitted or a hook installed via
process.setUncaughtExceptionCaptureCallback() is called.
安装 'uncaughtExceptionMonitor' 监听器不会改变 'uncaughtException' 事件触发后的行为。如果没有安装 'uncaughtException' 监听器,进程仍然会崩溃。
🌐 Installing an 'uncaughtExceptionMonitor' listener does not change the behavior
once an 'uncaughtException' event is emitted. The process will
still crash if no 'uncaughtException' listener is installed.
import process from 'node:process';
process.on('uncaughtExceptionMonitor', (err, origin) => {
MyMonitoringTool.logSync(err, origin);
});
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
// Still crashes Node.jsconst process = require('node:process');
process.on('uncaughtExceptionMonitor', (err, origin) => {
MyMonitoringTool.logSync(err, origin);
});
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
// Still crashes Node.js