这是我的代码。
if !module.parent
try
hons_server.listen config.port
console.log 'Listening to port ' + config.port
catch err
console.error "Couldn't start server: #{String(err)}".red
hons_server
是 express.js server .我很难理解为什么由于 hons_server.listen()
引发的错误不会被 try/catch 捕获。当我运行我的服务器两次时,我得到了输出:
$ coffee src/server.coffee Listening to port 9090 node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: listen EADDRINUSE at errnoException (net.js:632:11) at Array.0 (net.js:733:26) at EventEmitter._tickCallback (node.js:192:40)
我想知道为什么没有捕获抛出的错误,以及如何/在哪里可以捕获 EADDRINUSE 错误。
最佳答案
接受的解决方案不适用于 nodejs 0.8.22 和 express 3.1.0。
这成功了:
process.on('uncaughtException', function(err) {
if(err.errno === 'EADDRINUSE')
console.log(...);
else
console.log(err);
process.exit(1);
});
关于node.js - 如何捕获像 EADDRINUSE 这样的 node.js/express 服务器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544479/