Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Nodejs:如何在net.createServer.on(“";数据,…”)中捕获异常?_Sockets_Node.js_Exception Handling - Fatal编程技术网

Sockets Nodejs:如何在net.createServer.on(“";数据,…”)中捕获异常?

Sockets Nodejs:如何在net.createServer.on(“";数据,…”)中捕获异常?,sockets,node.js,exception-handling,Sockets,Node.js,Exception Handling,我有一个标准的套接字服务器(无HTTP)设置,如下所示(人为): 现在的问题是,我有一些代码抛出错误根本没有被捕获,导致服务器崩溃。作为最后一个衡量标准,我想在这个水平上抓住他们,但我尝试过的任何东西都失败了 server.on(“错误”、…) c.on(“错误”,…) 也许我需要使用套接字而不是c(连接),尽管我不确定如何使用 我在节点0.6.9上 谢谢。您应该自己捕捉异常。连接或服务器对象上都没有允许您按所述方式处理异常的事件。您应该将异常处理逻辑添加到事件处理程序中,以避免服务器崩溃,

我有一个标准的套接字服务器(无HTTP)设置,如下所示(人为):

现在的问题是,我有一些代码抛出错误根本没有被捕获,导致服务器崩溃。作为最后一个衡量标准,我想在这个水平上抓住他们,但我尝试过的任何东西都失败了

  • 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..')
})