为什么错误事件未处理?

时间:2017-11-10 08:02:09

标签: 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 in use.');
  }
}

我尝试删除if语句,但它没有更改结果。如果端口已经被进程绑定,则运行时我会收到以下错误,我想捕获并报告而不会导致进程退出。

  

events.js:160         扔掉//未处理的错误'事件         ^

     

错误:听EADDRINUSE ::: 6010
      at Object.exports._errnoException(util.js:1020:11)
      at exports._exceptionWithHostPort(util.js:1043:20)
      在Server._listen2(net.js:1262:14)
      在听(net.js:1298:10)
      at net.js:1408:9
      在_combinedTickCallback(internal / process / next_tick.js:83:11)
      at process._tickCallback(internal / process / next_tick.js:104:9)
      在Module.runMain(module.js:606:11)
      在运行中(bootstrap_node.js:383:7)
      在启动时(bootstrap_node.js:149:9)

为什么try...catch无法捕捉到这一点?

1 个答案:

答案 0 :(得分:1)

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

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