Jur*_*man 4 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
});
Run Code Online (Sandbox Code Playgroud)
这是因为没有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)
Run Code Online (Sandbox Code Playgroud)
当我启动redis-server(Ubuntu机器)并启动此脚本时,一切正常.如果我停止redis-server并启动脚本,它不会捕获异常并仍然抛出同样的异常.怎么可能?我有一个try/catch语句!
the*_*ejh 10
之后client = redis.createClient();,为error事件设置处理程序:
client.on('error', function(err) {
// handle async errors here
});
Run Code Online (Sandbox Code Playgroud)
看看堆栈跟踪 - 你的代码不在其中,所以没有try/catch可以捕获错误的地方.
| 归档时间: |
|
| 查看次数: |
3698 次 |
| 最近记录: |