───────┬────────────────────────────────────────────────────────────────────────
       File: src/main//java/jp/ac/kobe_u/cs/itspecialist/todoapp/controller/ToDoErrorHandler.java
───────┼────────────────────────────────────────────────────────────────────────
   1    package jp.ac.kobe_u.cs.itspecialist.todoapp.controller;
   2    
   3    import org.springframework.ui.Model;
   4    import org.springframework.web.bind.annotation.ControllerAdvice;
   5    import org.springframework.web.bind.annotation.ExceptionHandler;
   6    
   7    import jp.ac.kobe_u.cs.itspecialist.todoapp.exception.ToDoAppException;
   8    import lombok.extern.slf4j.Slf4j;
   9    
  10    /**
  11     * ToDoアプリの例外ハンドラクラス
  12     */
  13    @Slf4j
  14    @ControllerAdvice
  15    public class ToDoErrorHandler {
  16        /**
  17         * アプリケーション例外をハンドルし,エラーページを表示する
  18         */
  19        @ExceptionHandler(ToDoAppException.class)
  20        public String handleToDoException(ToDoAppException ex, Model model) {
  21            model.addAttribute("advice", "アプリケーション例外が発生しました.メッセージを確認してください");
  22            model.addAttribute("exception", ex);
  23            log.error(ex.getMessage());
  24            return "error";
  25        }
  26    
  27        /**
  28         * その他の例外をハンドルし,エラーページを表示する
  29         */
  30        @ExceptionHandler(Exception.class)
  31        public String handleException(Exception ex, Model model) {
  32            model.addAttribute("advice", "深刻なエラーが発生しました.管理者にお問い合わせください");
  33            model.addAttribute("exception", ex);
  34            log.error(ex.getMessage(), ex.getCause());
  35            return "error";
  36        }
  37    }
───────┴────────────────────────────────────────────────────────────────────────