一尘不染

使node.js不会因错误而退出

node.js

我正在使用Socket.IO在面向Websocket的node.js服务器上工作。我注意到一个错误,其中某些浏览器未遵循与服务器的正确连接过程,并且未编写代码来妥善处理该错误,总之,它调用了一个从未设置的对象的方法,从而杀死了该对象服务器由于错误。

我特别关注的不是错误,而是当发生此类错误时,整个服务器都将关闭。我可以在节点的全局级别上做任何事情来做到这一点,因此,如果发生错误,它将仅记录一条消息,也许会杀死该事件,但是服务器进程将继续运行?

我不希望其他用户的连接断开,因为一个聪明的用户在包含的大型代码库中利用了未捕获的错误。


阅读 216

收藏
2020-07-07

共1个答案

一尘不染

您可以将侦听器附加到uncaughtException流程对象的事件。

来自实际的Node.js API参考的代码(这是“过程”下的第二项):

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

setTimeout(function () {
  console.log('This will still run.');
}, 500);

// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

您现在要做的就是记录它或对其进行处理,以防万一,您知道在什么情况下会发生错误,您应该在Socket.IO的GitHub页面上提交错误:https :
//github.com/ LearnBoost /
Socket.IO节点/问题

2020-07-07