我正在使用Node Redis客户端库,我正在设计我的错误处理逻辑。有人可以帮助解决以下问题吗?
简而言之,我需要知道写操作(包括事务和脚本)是否成功。
具体来说,我正在思考客户端断开连接的情况。我看到三种情况:
1)客户端在操作开始之前断开连接 2)操作启动但失败,但客户端在报告错误消息之前断开连接 3)操作开始并成功,但客户端在报告响应之前断开连接
每个场景都可能需要一个不同的操作(1可能只是重试命令,2可能会理解为什么命令在重试之前失败,3可能会获取本应返回的响应)。
如何确定发生了哪种结果?
答案 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);
});