Sockets Nodejs:如何在net.createServer.on(“";数据,…”)中捕获异常?
我有一个标准的套接字服务器(无HTTP)设置,如下所示(人为): 现在的问题是,我有一些代码抛出错误根本没有被捕获,导致服务器崩溃。作为最后一个衡量标准,我想在这个水平上抓住他们,但我尝试过的任何东西都失败了Sockets Nodejs:如何在net.createServer.on(“";数据,…”)中捕获异常?,sockets,node.js,exception-handling,Sockets,Node.js,Exception Handling,我有一个标准的套接字服务器(无HTTP)设置,如下所示(人为): 现在的问题是,我有一些代码抛出错误根本没有被捕获,导致服务器崩溃。作为最后一个衡量标准,我想在这个水平上抓住他们,但我尝试过的任何东西都失败了 server.on(“错误”、…) c.on(“错误”,…) 也许我需要使用套接字而不是c(连接),尽管我不确定如何使用 我在节点0.6.9上 谢谢。您应该自己捕捉异常。连接或服务器对象上都没有允许您按所述方式处理异常的事件。您应该将异常处理逻辑添加到事件处理程序中,以避免服务器崩溃,
server.on(“错误”、…)
c.on(“错误”,…)
c
(连接),尽管我不确定如何使用
我在节点0.6.9上
谢谢。您应该自己捕捉异常。连接或服务器对象上都没有允许您按所述方式处理异常的事件。您应该将异常处理逻辑添加到事件处理程序中,以避免服务器崩溃,如下所示:
c.on('data', function(data) {
try {
// even handling code
}
catch(exception) {
// exception handling code
}
谢谢,但是10次中有9次是不可能的,因为我正在对域层进行异步调用。围绕异步调用进行try/catch将不会在try块中包含异步代码,因此永远不会捕获域抛出的错误。当然,大多数异常都是由域本身捕获的,但是总是有意想不到的…谢谢。这将确保节点进程不会被终止。但是,我相信这不会阻止套接字服务器停止。我将试一试,认为这是唯一正确的答案。。虽然对我的用例有点不满意,但是你能提供更多的信息来说明何时何地抛出错误吗?你自己会犯错误吗?最好的办法是根本不要抛出错误,而是通过回调将错误传递回以正确处理它们。事实上,在大多数情况下,我确实使用回调
callback(err,result)
等传递错误。我担心的是未捕获的异常。。它们可能发生在域层的深层。现在一切都好了。。谢谢
c.on('data', function(data) {
try {
// even handling code
}
catch(exception) {
// exception handling code
}
process.on('uncaughtException',function(err){
console.log('something terrible happened..')
})