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认为这是有意义的,只是我没有想到。