在node.js中捕获异常

2023-12-27

我有一个简单的程序,需要确保我可以连接到 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 语句!


After client = redis.createClient();,设置一个处理程序error event:

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

查看堆栈跟踪 - 您的代码不在其中,因此没有 try/catch 可以捕获错误的地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在node.js中捕获异常 的相关文章

随机推荐