2025-03-29

Expressでエラーハンドリングを実装する

https://expressjs.com/en/guide/error-handling.html

エラーをキャッチする

Expressはerrorが発生すると自動的にキャッチしてくれて、エラーハンドリングを行ってくれます。

デフォルトのエラーハンドリング

Expressはデフォルトでエラーハンドリングを行ってくれます。デフォルトのエラーハンドリングの挙動は以下の通りです。

  • res.statusCodeerr.statusから設定される。コードは4xxか、5xx以外の場合は500になる
  • res.statusMessageはstatusコードに沿って設定される
  • bodyは本番環境ではstatus code messageのhtmlを返す。開発環境ではエラーのスタックトレースを返す
  • err.headersオブジェクトで設定されたヘッダーがレスポンスに追加される

スタックトレースとは?

エラーハンドリングのカスタマイズ

エラーハンドリングをカスタマイズするには、エラーハンドリングミドルウェアを定義する必要があります。 エラーハンドリングは4つの引数を持ちます(error, req, res, next)。 エラーハンドリングのミドルウェアは最後に設定します

エラーレスポンスフォーマット

https://zenn.dev/ryamakuchi/articles/d7c932afc57e30 https://qiita.com/suin/items/f7ac4de914e9f3f35884 上記の例を参考にRFC7807 Wayを採用することにしました

実際に作成したエラーハンドリングミドルウェア