使用Node Redis客户端进行错误处理

时间:2014-07-24 19:55:17

标签: node.js redis

我正在使用Node Redis客户端库,我正在设计我的错误处理逻辑。有人可以帮助解决以下问题吗?

简而言之,我需要知道写操作(包括事务和脚本)是否成功。

具体来说,我正在思考客户端断开连接的情况。我看到三种情况:

1)客户端在操作开始之前断开连接 2)操作启动但失败,但客户端在报告错误消息之前断开连接 3)操作开始并成功,但客户端在报告响应之前断开连接

每个场景都可能需要一个不同的操作(1可能只是重试命令,2可能会理解为什么命令在重试之前失败,3可能会获取本应返回的响应)。

如何确定发生了哪种结果?

1 个答案:

答案 0 :(得分:1)

您尝试解决的案例适用于名为bluebird的promise库。

您想要处理多种不同类型的错误:

try {
    //code
}
catch(e) {
    if( e instanceof WhatIWantError) {
        //handle
    }
    else {
        throw e;
    }
}

现在蓝鸟可以更好地实现这一点:

var fs = Promise.promisifyAll(require("fs"));

fs.readFileAsync("myfile.json").then(JSON.parse).then(function (json) {
    console.log("Successful json")
}).catch(SyntaxError, function (e) {
    console.error("file contains invalid json");
}).catch(Promise.OperationalError, function (e) {
    console.error("unable to read file, because: ", e.message);
});