• Node错误处理
    Node在发生错误的时候,有个常规的处理方式。可以创建一个发出error类型事件的事件发射器,这样就可以为这一个事件类型设置一个或多个监听器,从而定义事件响应逻辑;而不是直接抛出错误。如下定义的错误事件被输出到控制台中

    1
    2
    3
    4
    const events = require('events');
    const myEmitter = new events.EventEmitter();
    myEmitter.on('error', err => console.log(`ERROR: ${err.message}`));
    myEmitter.emit('error', new Error('something is wrong.'));

    如果该事件类型被发出时没有处理该错误的事件监听器,事件发射器会输出一个堆栈跟踪并且停止执行。堆栈跟踪会用emit调用的第二个参数指明错误类型;如果发出的error类型事件没有第二个参数作为指定的错误类型,堆栈跟踪会指出一个‘未捕获,未指明的错误类型事件’,并且程序会停止执行。此时可以使用以下代码定义一个全局的未捕获的错误类型事件处理器:

    1
    2
    3
    4
    process.on('uncaughtException', err => {
    console.log(err.stack);
    process.exit(1);
    })