为啥错误事件未处理?
Posted
技术标签:
【中文标题】为啥错误事件未处理?【英文标题】:Why is an error event unhandled?为什么错误事件未处理? 【发布时间】:2018-04-23 09:50:44 【问题描述】:我很确定,根据端口号,我的代码中唯一可能引发此错误的地方是以下代码。
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._errnoException (util.js:1020:11) 在exports._exceptionWithHostPort (util.js:1043:20) 在 Server._listen2 (net.js:1262:14) 在听 (net.js:1298:10) 在 net.js:1408:9 在 _combinedTickCallback (internal/process/next_tick.js:83:11) 在 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
不会捕捉到这个?
【问题讨论】:
您可能已经自己检查过了,但错误信息真的与此代码有关吗?你在 events.js 中的 try-catch 在第 160 行吗? 服务器是异步创建的,所以在抛出错误时执行早已离开 try..catch 块。 刚才JJJ说的我觉得是对的,这是由于javascript的异步行为,此外还需要监控WebSocketServer产生的事件。所以必须为此编写 WebSocketServer.onerror。 我想@JJJ 这是有道理的,只是我没想过。 【参考方案1】:我认为您需要尝试一下。我认为这就是我们处理 websocket 错误的方式。
websocket.onerror = function(evt)
onError(evt)
;
【讨论】:
以上是关于为啥错误事件未处理?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Python 会在 Pygame 中为“事件”变量抛出未绑定的本地错误? [关闭]
为啥我在使用 javascript 自动完成时在 Eclipse 中收到消息:“未处理的事件循环异常 Java 堆空间”?