使node.js在出错时不退出
我正在使用Socket.IO在面向websocket的node.js服务器上工作。我注意到一个错误,某些浏览器没有遵循正确的连接过程到服务器,并且没有编写代码来优雅地处理它,简而言之,它调用一个方法来处理从未设置的对象,从而杀死服务器由于错误。
我关心的不是特别是bug,而是当发生这样的错误时,整个服务器都会崩溃。有什么我可以在节点的全局级别上做到这一点,如果发生错误它只会记录一条消息,可能会杀死事件,但服务器进程将继续运行?
我不希望其他用户的连接因为一个聪明的用户在大型包含的代码库中利用未被捕获的错误而关闭。
回答如下:您可以将侦听器附加到进程对象的uncaughtException
事件。
代码取自实际的Node.js API reference(这是“过程”下的第二项):
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.');
你现在要做的就是记录它或用它做一些事情,如果你知道在什么情况下发生了bug,你应该在Socket.IO的GitHub页面上提交一个bug: https://github/LearnBoost/Socket.IO-node/issues