0️⃣
ステータスコード0をどう扱うか
この記事を書いた背景
Sentryでエラーが着信していたので、Breadcrumbsを見ていたところ、エラーが吐かれる直前の非同期通信のステータスコードが[0]となっていました。
これはどんなエラーなのか?Sentryに通知すべきなのか?を調べました。
どんなエラーなのか(公式)
Before the request completes, the value of status is 0. Browsers also report a status of 0 in case of XMLHttpRequest errors.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status
訳すと「リクエストが完了する前は、statusの値は0になります。ブラウザは、XMLHttpRequestのエラーが発生した場合も、ステータスコードを0と報告します。」となります。
実際にこのユーザーの操作ログをみてわかったこと
- 同時にいくつかのリクエストを送っていて、ステータスコードが[0]になったのは最後にリクエストされたもの。(=それ以降のリクエストがない)つまり、画面遷移かなにかの直前にリクエストしたもののステータスコードが0になっている
- サーバーのレスポンスのログを見ると、ステータスコードは200が返っている
どう処理するか
サーバーでは200で処理できている、ユーザーがそれ以上サービスを閲覧していないことから、Sentryに通知は不要と判断しました。
扱っているサービスでは、非同期通信にaxiosを使っていました。
ステータスコードが0が発生するのは、response
が無いときなので、その場合に、特定のエラー文を発生させて、その文章を ignoreErrors
に登録することで対応しました。
request?: any;
response?: AxiosResponse<T, D>;
Discussion