簡體   English   中英

在node.js中捕獲異常

[英]Catch exception in node.js

我有一個簡單的程序,需要確保我可以連接到Redis服務器。 我使用node-redis進行連接,需要等到Redis啟動。 我用這段代碼:

function initializeRedis(callback) {
    (function createClient(){
        var runner;
        try {
            client = redis.createClient();
        } catch (e) {
            setTimeout(createClient, 1000);
        }
        callback();
    })();
};

initializeRedis(function() {
// Work here
});

這是因為沒有try / catch,我從node.js得到了一個異常:

 node.js:134
         throw e; // process.nextTick error, or 'error' event on first tick
         ^ Error: Redis connection to 127.0.0.1:6379 failed - ECONNREFUSED, Connection refused
     at Socket.<anonymous> (/var/www/php-jobs/node_modules/redis/index.js:88:28)
     at Socket.emit (events.js:64:17)
     at Array.<anonymous> (net.js:830:27)
     at EventEmitter._tickCallback (node.js:126:26)

當我啟動redis-server(Ubuntu機器)並啟動此腳本時,一切正常。 如果我停止redis-server並啟動腳本,它不會捕獲異常並仍然拋出同樣的異常。 怎么可能? 我有一個try / catch語句!

client = redis.createClient(); ,為error事件設置處理程序:

client.on('error', function(err) {
  // handle async errors here
});

看看堆棧跟蹤 - 你的代碼不在其中,所以沒有try / catch可以捕獲錯誤的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM