2017-09-13 13 views
-1

redis.setコールバックのエラー例外をスローし、try-catchブロックをキャッチして、エラー処理Expressミドルウェアに制御を渡したいとします。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

can not catch非同期イベント。そのための約束を使用します。

const getKey = new Promise((res,rej) => { 
    redis.get('key', (err, reply) => { 
    if(err) return rej(err); 
    res(reply); 
    }); 
}); 

だから、1が行うことができます:

getKey.catch(next); 

getKey.then(reply => { 
    //do whatever 
    next(); 
}); 
+0

このコールバックが非同期であることを、ありがとう、知らなかった。 – Quimmo

関連する問題