あなたはNodeJSアプリケーションを使用している場合は、中央ですべてのあなたのスローエラーを管理することができます。
また、あなたのエラーに名前を付ける必要があります。
class ApiError extends Error {
constructor (message, code) {
super(message);
this.name = 'ApiError';
this.code = code;
}
}
は、同様に他のエラーの種類の他の名前を使用します。 Expressアプリケーションのために
、あなたが約束の中から投げている場合
app.use(routes);
// place this after your routes in express app. This will catch all your thrown errors.
app.use(function (err, req, res, next) {
console.log(err);
switch (err.name) {
case 'ApiError':
// write to file here
return res.status(err.code || 500).send({error: err.message});
case 'Some other error':
// handle differently
break;
default:
res.status(err.status || 500).render('500', {error: err});
}
});
注意、非同期/のawait、これはあなたのエラーをキャッチしません。あなたはまた、すべてのキャッチされない例外をキャッチする必要があり、おそらく
process.on('unhandledRejection', (reason) => {
console.log(reason);
// log error in file
});
同様にアプリ内のすべての未処理の約束の拒否を引くことで、それらを一元他の方法をキャッチする必要があります一元
process.on('uncaughtException', (err) => {
console.log(err);
// log error in file
});
提案: ファイルのロギングエラーに関する限り、これはファイルを別の方法で解析してログを出力するなどしてファイルをログ保存した場合にのみ行うことができます。
プログラムでファイルを解析する予定がない場合は、エラーをerrordb/error-tableに記録してください。彼らはそれほど簡単に問い合わせることができます:)
は、あなたがのtry..catchブロックを使用するようになる:私は実際には常にだから私はそのような何かをするだろう
を書くことができるようにするために、それを行いますか? – brk
でもtryキャッチでは、関数を呼び出してファイルに書き込む必要があります。私はスローがどこにあるにせよ、私の機能を実行すべきところがどこにあっても、ノードJSのアプリケーション全体にスローがどこにあるかに関わらず、それを探しています。 – Akshay
あなたはnodejsでそれをしたいですか? –