暇な日々にスパイスを

学んだ技術の備忘録

SpringBoot 18 エラー時のデフォルトレスポンスを実装

SpringBootではエラー時のデフォルトレスポンスが実装されています。

StackTraceまで表示されるのはデバッグ時には便利ですが、ユーザには見せたくありません。
また、独自のエラーレスポンスで置換えたい時があります。

そこで、デフォルトレスポンスを実装し直します。

下記記事のRestController編を参考にしました。
qiita.com

後は独自のExceptionを実装し、そこから情報を取得するように変更します。

 private void addErrorMessage(Map<String, Object> errorAttributes, Throwable error) {
    if (!(error instanceof CustomException)) {
      errorAttributes.put("details", null);
      return;
    }
    CustomException cmErr = (CustomException) error;
    errorAttributes.put("details", cmErr.getDetails());
  }

また、エラー時のステータスコードについては以下の記事にある、特定の例外がスローされたときのステータスコードを指定するを参考に実装しました。

qiita.com

これで、エラーの場合の実装も完了です。