如何使用NodeJS捕获全局错误

12

我遇到了一个未处理的错误,但是不确定它来自哪里。我的应用程序在不同的方法中有几个http.request(options, callback).end(),其中回调函数捕获了"uncaughtException"和"error"。我想知道是哪个方法引发了这个问题。下面是我收到的错误。它是随机的。您有什么想法如何追踪它?我希望有一种全局的方式来捕获未处理的错误。

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: read ECONNRESET
    at exports._errnoException (util.js:746:11)
    at TCP.onread (net.js:559:26)
2个回答

24

ECONNRESET 意味着 TCP 连接的另一端已中止。你可以查看服务器日志,但因为这是在随机时间发生的,这让我想到服务器变得超载并终止了一些连接。

如果在任何时候启动进程,请尝试以下操作:

process.on('uncaughtException', function (err) {
  console.error(err.stack);
  console.log("Node NOT Exiting...");
});

请查看我上面的其他评论 - user603749

5
附加一个

标签


request.on('error', function(err) {
    // Handle error
});

根据您的请求。

您还可以捕获进程中未捕获的错误:

process.on('uncaughtException', function(err) {
  console.log('Caught exception: ' + err);
});

这个错误信息显示连接被重置,所以肯定是其中一个请求的问题。

1
正如我在帖子中所述,我已经这样做了。我正在尝试找出是否存在全局的catchall错误处理方式(有点像旧时代的ON ERROR GOTO :))。 - user603749
你的程序没有进入其中任何一个吗? - AlexD
不,它没有进入任何一个。 - user603749
尝试使用request-promise-json库,我认为它具有更好的错误处理能力,并且它是在默认请求之上构建的。 - AlexD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接