微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处理node.js中库中未处理的异常

我有一个使用Express和Redis的node.js应用程序.我的问题是如何捕获和处理Redis连接错误.我在express中有一个app.error函数来处理大多数应用程序错误,但由于这个错误是在redis库中抛出的错误,它变成了一个未捕获的异常并且整个应用程序都关闭了.

我可以在我的redis客户端上定义一个on_error方法吗?如果是这样可能是一些示例代码我应该以某种方式处理node.js下一个tick错误?我不确定我完全理解下一个陈述,所以不确定什么是最佳做法.

在下面的代码中,即使存在连接错误,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)

解决方法

是的,您需要指定错误处理程序:
FeedClient = redis.createClient(FeedPort,FeedHost);
FeedClient.on("error",function(err) {
  console.error("Error connecting to redis",err);
});

原文地址:https://www.jb51.cc/nodejs/241122.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐