как обрабатывать необработанные исключения в библиотеках в node.js

У меня есть приложение node.js, использующее Express и Redis. У меня вопрос, как мне выявить и обработать ошибку подключения Redis. У меня есть функция app.error в express, которая обрабатывает большинство ошибок приложения, но поскольку эта ошибка возникает в библиотеке redis, она становится неперехваченным исключением, и все приложение отключается.

Могу я просто определить метод on_error в моем клиенте Redis, и это поможет? Если да, может быть, какой-нибудь образец кода? Должен ли я как-то обрабатывать это при ошибке следующего тика node.js? Я не уверен, что правильно понимаю следующее утверждение, поэтому не уверен, что лучше всего.

В приведенном ниже коде блок перехвата никогда не срабатывает, даже если есть ошибка соединения.

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)
6
задан The Nail 18 February 2012 в 23:10
поделиться