我正在使用 Socket.IO 开发面向 websocket 的 node.js 服务器。我注意到一个错误,其中某些浏览器没有遵循正确的服务器连接过程,并且没有编写代码来优雅地处理它,简而言之,它调用一个从未设置的对象的方法,从而杀死服务器出错了。
我关心的不是特别的错误,而是当发生此类错误时,整个服务器都会关闭。我可以在 Node 的全局级别上做些什么来做到这一点,所以如果发生错误,它只会记录一条消息,也许会终止事件,但服务器进程将继续运行?
我不希望其他用户的连接因一位聪明的用户利用包含的大型代码库中 Uncaught Error 而中断。
最佳答案
您可以将监听器附加到流程对象的 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.');
你现在要做的就是记录它或用它做点什么,如果你知道在什么情况下会发生错误,你应该在 Socket.IO 的 GitHub 页面上提交一个错误:
https://github.com/LearnBoost/Socket.IO-node/issues
关于node.js - 使 node.js 不退出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4213351/