SpringBoot 例外のサンプル@RestControllerAdvice

Spring Bootの例外処理で@RestControllerAdviceを使用するサンプルです。
(確認環境:Spring Boot 2.5,JDK 11)

目次

サンプル 例外処理(@RestControllerAdvice)のサンプル
  コントローラのクラス(MainController.java)
  コントローラアドバイス(TestControllerAdvice.java)

例外処理(@RestControllerAdvice)のサンプル

コントローラクラス(MainController.java)でJSONを受信します。
強制的に例外を発生させ@RestControllerAdviceがあるクラス(TestControllerAdvice.java)で例外をキャッチしレスポンスを返します。

以下のURLでアクセスします。
http://localhost:8765

githubにコードがあります。
https://github.com/ut23405/springboot/tree/master/springboot-RestControllerAdvice

コントローラが受信するJSON

{
    "color1": "赤",
    "color2": "黄"
}

 

コントローラのクラス(MainController.java)

package com.example.demo;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {
	@PostMapping
	public String output1(@RequestBody Color color) {		
		System.out.println(color.getColor1());
		System.out.println(color.getColor2());
		int i = 5;
		if (i == 5) {
			throw new NullPointerException(); 
		}
		return "test";
	}
}

10行目の@RequestBodyはJSONを受信しColorクラスに値をセットします。
15行目は、確認のためNullPointerExceptionを発生させています。

 

コントローラアドバイス(TestControllerAdvice.java)

package com.example.demo;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class TestControllerAdvice {
	
	@ExceptionHandler(NullPointerException.class)
	public String test(HttpServletRequest request) {
		return request.getLocalAddr();
	}
}

8行目に@RestControllerAdviceアノテーションを追加します。全コントローラが対象になります。
11行目は、@ExceptionHandlerでNullPointerExceptionの例外をキャッチします。

関連の記事

SpringBoot 例外のサンプル(ControllerAdvice)

△上に戻る