node.js - 如何捕获像 EADDRINUSE 这样的 node.js/express 服务器错误?

标签 node.js express error-handling coffeescript

这是我的代码。

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_serverexpress.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 Express app handle startup errors

关于node.js - 如何捕获像 EADDRINUSE 这样的 node.js/express 服务器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9544479/

相关文章:

javascript - 当达到字符限制时,如何在字符串中添加换行符而不破坏单词?

javascript - 绑定(bind) `this` 到 `call` 不起作用

javascript - (MERN) 使用 Express.js 提供 React 应用程序的正确方法是什么?

wcf - 使用WebFaultException的WCF错误管理-错误的HttpStatusCode

Python套接字io客户端不接受连接,但 Node 客户端接受

node.js - 套接字泄漏 (sockets.io)

node.js - 将更新推送到运行 Node 应用程序的设备

node.js - nodejs表达本地ip地址

javascript - express : Specify HTTP status code when throwing error in service

ruby-on-rails - Rails如何从Heroku的Error R15中解救