NISHIO Hirokazu[Translate]
無意識に例外を握りつぶしてた
例外が発生したら画面(react-error-overlay)に出るだろうと期待している状況で、画面に出なかったので問題に気づくのが遅れた。

観測事実
ts
console.log("will report"); throw new TypeError("report");
これでwill reportがコンソールに出るが、画面にもコンソールにもTypeErrorのエラーメッセージが表示されない

原因
このコードはPromiseの中にあった
サーバ上のデータを取得するところなのでこれは自然
そのPromiseの.catchで、問題をSentryに報告するようにしていた
ts
console.log("report1"); throw new TypeError("report"); ... }) .catch((error: unknown) => { Sentry.captureException(error); });
つまり例外をReactが捕捉する前に処理してしまっている
throwすると期待通りに表示されるようになった
diff
- Sentry.captureException(error); + throw error;
ということはつまりそもそも .catch(...) を書くべきではなかったのでは
単にレポートするだけのcatchに意味はない
Sentryのユーザフィードバックダイアログを出すようにした

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]