如何在node.js库中处理未处理的exception

我有一个使用Express和Redis的node.js应用程序。 我的问题是如何捕获和处理Redis连接错误。 我有一个快速处理大多数应用程序错误的app.error函数,但由于这个错误是在redis库中引发的错误,它成为一个未捕获的exception,整个应用程序停止。

我可以在我的redis客户端上定义一个on_error方法吗? 如果是这样,也许有一些示例代码 我应该以某种方式处理它在Node.js下一个滴答错误? 我不确定我是否理解下一个陈述,所以不知道最佳做法是什么。

在下面的代码中,即使存在连接错误,catch块也不会被命中

try { feedClient = redis.createClient(feedPort, feedHost); } catch (error) { console.log('cannnot start redis' + error); } 

这是未被捕获的错误

 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Redis connection to localhost:6379 failed - ECONNREFUSED, Connection refused at RedisClient.on_error (/node_modules/redis/index.js:136:24) at Socket. (/node_modules/redis/index.js:70:14) at Socket.emit (events.js:64:17) at Array. (net.js:830:27) at EventEmitter._tickCallback (node.js:126:26) 

是的,你需要指定一个error handling程序:

 feedClient = redis.createClient(feedPort, feedHost); feedClient.on("error", function(err) { console.error("Error connecting to redis", err); });