JavaScriptのstacktraceが出てるエラーを全て潰す
herokuは、webのプロセスがstatus 500を返したり、レスポンスに時間がかかったりするとエラーを出してくれる
これの監視はしっかりできている
batch処理はwebのプロセスではない
HTTP status codeもHeroku Error Codeも出ない
標準出力やエラー出力を見てなんとかしなければならない
あらためて色々logを見直した
実際はエラーではないが、エラーのように見える出力がある事がわかった
滅茶苦茶まぎらわしいのでどうにかしたい
まぎらわしい
修正すべき重大なエラー
例外処理の成功報告
どちらもこうハンドリングしていた
code:js
try {
何か処理
} catch (err) {
console.error(err.stack || err)
}
単純なルール
2. ソースコードを修正する必要がない例外処理の成功は、stacktraceを出さない 例:不正なリクエスト拒否に成功した場合など
/[^\s]+\.js:\d+:\d+\)?$/
console.error(err.stack)で出る、全パターンにマッチする
2週間ぐらい、slackに無限にstacktraceが流れ続けて発狂しかけた
ソースコードを修正すべき重大なエラーと、例外処理の成功報告を分ける
例外処理したらstacktrace出力せず、clientにresponseを返すだけにする
code:js
import MongooseValidationError from 'mongoose/lib/error/validation'
router.get('/foo/bar', (req, res, next) => {
try {
何か処理
} catch (err) {
if (err instanceof MongooseValidationError) { // DBのvalidation error
return res.status(400).error('bad request')
}
// 以下、不明なエラーのハンドリング
console.error(err.stack || err)
res.status(500).error('何が起きたかよくわからないエラーなので修正の必要がある')
}
})