这是我的代码。
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监听9090端口node.js:201抛出e; // process.nextTick错误,或在第一次滴答中出现“错误”事件^错误:收听EADDRINUSE在errnoException(net.js:632:11)在Array.0(net.js:733:26)在EventEmitter._tickCallback(node.js:192:40)
我想知道为什么未捕获引发的错误,以及如何/在何处捕获EADDRINUSE错误。
hons_server.on 'error', (err) ->
console.log 'there was an error:', err.message
process.on('uncaughtException', function(err) {
if(err.errno === 'EADDRINUSE')
console.log(...);
else
console.log(err);
process.exit(1);
});