EventEmitter 实例出错时,应该触发 'error' 事件。 这些在 Node.js 中被视为特殊情况。

    如果没有为 'error' 事件注册监听器,则当 'error' 事件触发时,会抛出错误、打印堆栈跟踪、并退出 Node.js 进程。

    1. const myEmitter = new MyEmitter();
    2. myEmitter.emit('error', new Error('错误信息'));
    3. // 抛出错误并使 Node.js 崩溃。

    为了防止崩溃 Node.js 进程,可以使用 [domain] 模块。 (但请注意,不推荐使用 domain 模块。)

    作为最佳实践,应该始终为 'error' 事件注册监听器。

    1. const myEmitter = new MyEmitter();
    2. myEmitter.on('error', (err) => {
    3. console.error('错误信息');
    4. });
    5. myEmitter.emit('error', new Error('错误'));
    6. // 打印: 错误信息

    通过使用符号 errorMonitor 安装监听器,可以监视 'error' 事件但不消耗触发的错误。

    1. const myEmitter = new MyEmitter();
    2. myEmitter.on(EventEmitter.errorMonitor, (err) => {
    3. MyMonitoringTool.log(err);
    4. });
    5. myEmitter.emit('error', new Error('错误'));
    6. // 仍然抛出错误并使 Node.js 崩溃。