在timout上从node.js获取堆栈回溯?

时间:2015-06-29 19:25:57

标签: node.js express promise

我正在使用node.js和域cluster来捕获意外异常(程序员错误)然后正常重启。但是,我们偶尔会让程序员无法添加最终.catch().finally()以确保其代码实际返回。

我可以轻松添加一个超时,该超时会在预先指定的时间后抛出异常,以确保这些错误请求不会永远存在。但我想要做的是将超时拉出信息从域中解释出来,以解释请求中发生了什么,这样我们就可以得到一个日志/通知/任何开头都能很好地指示程序员错误的位置

有没有合理的方法呢?

如果重要,我们使用express作为框架,express-domain-middleware来获取域/重启逻辑,并承诺使用异步逻辑。

1 个答案:

答案 0 :(得分:1)

您实际上并不需要域名。如果您使用promise库(如bluebird,或者甚至是Q)或最新版本的Node(即,io.js),则不必记住在所有链上使用.catch并使用专门活动:

 process.on("unhandledRejection", function(e, reason){
      // promise was rejected, even if no `catch` or `finally` attached
      // restart the process
 });

请注意,不推荐使用域名,并且可能会在未来版本的NodeJS中删除这些域名,如果您使用已经保证安全的承诺,那么就可以了。