我想为redis.set回调抛出一个错误异常,并在try-catch块中捕获,然后控制错误处理表达中间件。
try {
redis.get('key', (err, reply) => {
if(err) throw err;
if(!reply) throw new Error('Can't find key');
});
}
catch{
next(error);
}
问题是,try-catch根本不起作用,错误发送到节点控制台,但服务器响应200状态。
答案 0 :(得分:0)
你无法捕获异步事件。使用承诺:
const getKey = new Promise((res,rej) => {
redis.get('key', (err, reply) => {
if(err) return rej(err);
res(reply);
});
});
所以可以这样做:
getKey.catch(next);
getKey.then(reply => {
//do whatever
next();
});