javascript - 在 node.js 中捕获异常

标签 javascript exception 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 无法捕获错误。

关于javascript - 在 node.js 中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8071291/

相关文章:

javascript - Node Mysql查询队列但从不执行

javascript - 使用 node-fetch 检索响应查询

javascript - 将onclick值作为按钮的标识符

java.text.ParseException : Unparseable date "yyyy-MM-dd' T'HH:mm:ss. SSSZ"- SimpleDateFormat

javascript - Electron 未捕获错误 : A dynamic link library (DLL) initialization routine failed

node.js - azure node.js 请求、响应 - 寻求一些澄清

javascript - OrderBy 日期值,在 Angular JS 中只是字符串

javascript - Angular 指令 ng-model 适用于数组,但不适用于字符串

jquery - 如何在 ASP.NET 4 母版页中使用 jQuery

python-2.7 - python : argparse throwing value error when combining positional and optional argument