最好的做法是绑定uncaughtException事件来处理回调nodejs中发生的错误吗?

时间:2015-11-03 06:30:25

标签: javascript node.js

 var customError = function (){
    try{
        setTimeout(function(){
            console.log("time out called");
            throw new Error ("Error in call back");
        },5000);
    }catch(e){
        console.log(e);
    }
}
customError();

process.on('uncaughtException', function (err) {
  console.log(err);
})

我读了一些博客,发现我们可以使用“uncaughtException”进程事件来处理回调中发生的错误。但另一方面,我读取而不是“uncaughtException”你应该使用promise库。但是“uncaughtException”事件对我很好。我只是想知道处理回调错误是最佳做法吗?

2 个答案:

答案 0 :(得分:1)

你不应该处理' uncaughtException'因为你不知道它来自哪里(你的应用程序或NodeJS)。

  

未处理的异常意味着您的申请 - 以及扩展   Node.js本身 - 处于未定义状态。盲目恢复意味着   任何事情都可能发生。

https://nodejs.org/api/process.html#process_event_uncaughtexception

Joyent在https://www.joyent.com/developers/node/design/errors

上有一篇关于处理NodeJS错误的文章

答案 1 :(得分:0)

这是@Josnidhin的回答版本。

通常,您应该在发生异常时将异常处理或将其传递给被调用者。传递给被叫者你可以使用

  1. err作为第一个参数(Node.js社区接受的标准)传递给回调函数。 [回调模式]
  2. 您可能希望使用promises而不是回调模式。
  3. 你还应该订阅事件uncaughtException,以便知道发生了一些糟糕的事情,现在服务器可能会进入一些不一致的状态。在这里,您可能希望将邮件程序发送给管理员,说明发生异常的详细信息或重新启动服务器本身。