Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Javascript 为什么错误事件未处理?_Javascript_Node.js_Error Handling - Fatal编程技术网

Javascript 为什么错误事件未处理?

Javascript 为什么错误事件未处理?,javascript,node.js,error-handling,Javascript,Node.js,Error Handling,我非常确定,根据端口号,我的代码中唯一可能抛出此错误的地方是下面的代码 try { webServer = new WebSocketServer({ port: args.listen }); } catch (exception) { if (exception instanceof Error) { logger.log('Could not bind port ' + args.listen + ' for ' + args.name +', already

我非常确定,根据端口号,我的代码中唯一可能抛出此错误的地方是下面的代码

try {
  webServer = new WebSocketServer({
    port: args.listen
  });
} catch (exception) {
  if (exception instanceof Error) {
    logger.log('Could not bind port ' + args.listen + ' for ' + args.name +', already in use.');
  }
}
我试图删除
if
语句,但它没有改变结果。如果端口已被某个进程绑定,则在运行此操作时,我会得到以下错误,我希望捕获并报告该错误,而不会导致进程退出

events.js:160 投掷者;//未处理的“错误”事件 ^

错误:侦听EADDRINUSE::6010
在Object.exports.\u errnoException(util.js:1020:11)
在导出时。主机端口例外(util.js:1043:20)
在服务器上。\u listen2(net.js:1262:14)
听(net.js:1298:10)
在net.js:1408:9
at\u combinedTickCallback(内部/流程/下一步\u tick.js:83:11)
在进程中。_tickCallback(内部/进程/下一个_tick.js:104:9)
在Module.runMain(Module.js:606:11)
运行时(bootstrap_node.js:383:7)
启动时(bootstrap_node.js:149:9)


为什么这不会被
try…catch
捕获?

我想你需要尝试一下。我认为这就是我们处理websocket错误的方式

websocket.onerror = function(evt) {
            onError(evt)
         };

您可能已经自己检查过了,但错误消息是否真的包含此代码?您的try-catch是否位于events.js的第160行?服务器是异步创建的,因此在抛出错误时,执行早已离开try..catch块。我认为JJJ刚才提到的是正确的,这是由于JavaScript的异步行为,此外,您还需要监视从WebSocketServer生成的事件。所以WebSocketServer.onerror必须为此编写。我想@JJJ认为这是有意义的,只是我没有想到。