「SpringBoot 2.6」コントローラのメソッドで例外(exception)処理のサンプル

環境
Windows10 64bit
Spring Boot 2.6.2
Spring Tool Suite 4
JDK 11
書式
public class 例外クラス名 extends RuntimeException{
例外クラス名(String message) {
//継承元クラスのコンストラクタ
super(message);
}
}

使用例
1.コントローラのメソッドで独自の例外処理を行う(ChaController.java)

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/cft2")
public class ChaController {

      public static final String TT = "sos";

      @GetMapping()
      public String funA(Model model) {
            try {
                  funB();
            } catch (SampleException e) {
              //例外情報をresultに保存
                  model.addAttribute("result", e);
                  return "cft2/index";
            }
            return "cft2/index";
      }
//関数funBの定義
      void funB() {
            String str = "sos";
            if (str.equals(TT)) {
                  System.out.println("test message");
                  throw new SampleException("定義例外throw");
            }
      }

}

2.独自の例外クラスの定義(SampleException.java)

package com.example.demo;

//RuntimeExceptionクラスを継承 独自の例外クラスの定義
public class SampleException extends RuntimeException {
      

      private static final long serialVersionUID = 1L;

      SampleException(String message) {
            //継承元クラスのコンストラクタ
            super(message);
      }

}

3.ビューのファイル
(src/main/resources/templates/cft2/index.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>例外エラーメッセージ処理表示ページ</title>
</head>
<body >
<p th:text="${result}"></p>
</body>
</html>

4.プロジェクトを右クリックして、「実行(R)」->「Spring Boot アノテーション」をクリックします
5.動作確認
http://127.0.0.1:8080/cft2
画面に「com.example.demo.SampleException: 定義例外throw」が表示されます

Spring Boot

Posted by arkgame