SpringBootの例外を処理する共通処理の作成

記事概要

SpringBootで作成したwebアプリケーションにおいて発生する例外を処理してくれる共通のクラスを作成する
 
 

環境メモ

  • SpringBoot 2.2.2
     
     

    構造メモ

    source/main/java/aaa/bbb/ccc/controllerフォルダ内に、例外を処理するためのクラス「ExceptionController.java」を作成
     
     

    ソースメモ

@ControllerAdvice
public class ExceptionController {
  public ExceptionController(){}


  // 自前で作成したHogeHogeExceptionを処理するためのメソッド。HogeHogeExceptionのクラスの内容は後述。  
  @ExceptionHandler(HogeHogeException.class)
  public ModelAndView hogehogeExceptionHandler(HogeHogeException e, RedirectAttributes redirectAttributes){
    ModelAndView mav = new ModelAndView();
    mav.setViewName("redirect:/");
    redirectAttribuets.addFlashAttribute("errorMessage", "エラーです");
    return mav;
  }

  @ExceptionHandler(Exception.class)
  public ModelAndView allExceptionHandler(Exception e){
    e.printStackTrance();
    ModelAndView mav = new ModelAndView();
    mav.setViewName("error");   // エラーページに遷移させる
    return mav;
  }
}

 
 

補足

処理内で何か例外が発生すると、ここの処理が呼び出されます。
 
 

自作例外クラスメモ

// ReponseStatusをつけていますが、結局上の例外処理クラスでredirectさせているのでステータスコードは302になります・・・。ちゃんとした処理方法はまた勉強します・・・。
@ResponseStatus(HttpStatus.NOT_FOUND)
public class HogeHogeException extends RuntimeException {
  public HogeHogeException(String message) { super(message); }
}

 
 

参考サイト

※上の内容は参考サイトの内容をちゃんと踏まえてない箇所も多いです・・・これはあくまで自分用の記事なので、もしこの記事をお読みになった方は以下サイトをきちんと参照しておくことを推奨します。
qiita.com fa11enprince.hatenablog.com