2012-02-16 13 views
6

Express ve Redis kullanarak bir node.js uygulamasına sahibim. Sorum şu: Redis bağlantı hatasını nasıl yakalarım ve nasıl ele alacağım. Birçok uygulama hatasını işleyen bir app.error işlevine sahibim ancak bu hata redis kitaplığına atılan bir hata olduğundan yakalanmamış bir istisna haline gelir ve tüm uygulama kapanır.node.js'de kitaplıklarda işlenmeyen istisnalar nasıl işlenir

Redis istemcimde bir on_error yöntemi tanımlayabilir miyim? Eğer öyleyse belki bazı örnek kod? Bir şekilde bir node.js sonraki kene hatası içinde ele almalı mıyım? Bir sonraki ifadeyi tam olarak anladığımdan emin değilim, en iyi uygulamanın ne olduğundan emin değilim. asla bile çarparsa catch bloğu Aşağıdaki kodda

İşte

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) 
+0

Neredeyse iki kez http://stackoverflow.com/q/8071291/638546 adresine kopyalayın. –

cevap

11

Evet, bir hata işleyicisi belirtmeniz gerekir yakalanmamış hatadır bir bağlantı hatası

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

varsa:

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

yah i Bir redis bağlantısı için dling, 3 vardı, diğer ikisini ele almadı, neden çatlama olduğunu anlayamadım. +1 –

+0

Redis düğüm modülü dahili olarak EventEmitter'ı prototipliyor. –

İlgili konular