2017-09-13 66 views
-1

我想爲redis.set回調拋出一個錯誤異常,並捕獲try-catch塊,然後控制錯誤處理express expressware。如何爲nodejs中的同步回調拋出異常?

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

你怎麼稱呼這個代碼?你如何發送迴應? – alexmac

回答

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(); 
}); 
+0

謝謝,不知道,這個回調是異步的。 – Quimmo