2015-11-03 55 views
0
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”,你应该使用承诺库。但“uncaughtException”事件适合我。我只想知道是否最好的做法来处理回调错误或不?最好的做法是绑定uncaughtException事件来处理callback nodejs中发生的错误?

回答

1

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

未处理的异常意味着你的应用程序 - 并通过扩展 Node.js的本身 - 处于不确定的状态。盲目恢复意味着 任何事情都可能发生。

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

Joyent公司拥有在https://www.joyent.com/developers/node/design/errors

+0

谢谢,在阅读joyent文章后,我现在大部分的疑惑都被清除了。 –

0

这对处理中的错误的NodeJS的好文章是extentded @ Josnidhin的回答版本。

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

  1. 传递err作为第一个参数(标准由Node.js的社区接受)回调函数。 [回调模式]
  2. 您可能需要使用promise而不是回调模式。

你也应该订阅事件uncaughtException为了知道发生了一些糟糕的事情,现在服务器可能会出现一些不一致的状态。在这里,您可能希望发送邮件给管理员,说明发生异常的详细信息或重新启动服务器本身。

相关问题