nodejs 是事件触发机制,所以对一段代码进行异常捕获时,捕获不到.
发布于 13 年前 作者 ly1234444 10047 次浏览 最后一次编辑是 8 年前

代码如下, var WebSocketServer = require(‘ws’).Server; var express = require(‘express’); var app = express.createServer();

var globalServerPort = 8888;

// 开启websocket服务,让客户端连接进入房间 var wsServer; try { wsServer= new WebSocketServer({server: app}); wsServer.on(‘connection’, function(ws) { // 提示 console.log(“a new connection ws :” + ws);

	// 监听该连接打开
	ws.onopen = function() {
		console.log('connection is open ! ws is :' + ws);
	};
	// 监听该连接上的消息
	ws.onmessage = function(event) {
		// 打印
		console.log(event.data);
	};
	// 监听该连接关闭
	ws.onclose = function() {
		console.log('connection is close ! ws is :' + ws);
	};
});
app.listen(globalServerPort); 
console.log('app 执行了listen ');

} catch (e) { console.log(‘catch an exception!’); } finally { console.log(‘finally !’); }

执行结果如下: E:>node test.js app ִ����listen finally !

node.js:201 throw e; // process.nextTick error, or ‘error’ event on first tick ^ Error: listen EADDRINUSE at errnoException (net.js:642:11) at Array.0 (net.js:743:26) at EventEmitter._tickCallback (node.js:192:40)

E:>

6 回复

怎么代码放上去这么乱了

这种事件代码自然没法这样捕获异常,我猜你应该可以用onerror来处理出错。

try{…} catch{} 是无法捕获异步的错误的

学习下markdown

那一般异步的错误都怎么样处理啊?我程序中是想,如果监听端口被占用,那么出错后我再指定一个端口.有什么机制能及时得到异步的错误信息,并做处理?

@ly1234444 server.listen(80)是同步操作啊,你可以用try,catch的异步错误一般是写个错误事件监听器,或者在回调里处理。

回到顶部