250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 설정
- SpringBoot
- Tomcat
- 오픈소스
- Open Source
- git
- MSSQL
- Core Java
- AJAX
- error
- Spring Boot
- ubuntu
- Eclipse
- Python
- Thymeleaf
- jpa
- 문서
- IntelliJ
- Docker
- PostgreSQL
- oracle
- Source
- JDBC
- spring
- myBatis
- JavaScript
- maven
- MySQL
- STS
- Exception
Archives
- Today
- Total
헤르메스 LIFE
[Spring] Exception 처리 본문
728x90
@ExceptionHandler 를 사용하면, Exception 을 Catch 할 수 있습니다.
@ExceptionHandler는 Controller 에서만 사용 가능합니다.
package test.controller;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@GetMapping("/test1")
public String test1(Model model) {
ArrayList<String> list = null;
list.add("문자열");
return "test1";
}
@ExceptionHandler(ArrayIndexOutOfBoundsException.class)
public String exception1() {
return "error1";
}
}
Global Exception Handler는 모든 Controller에서 발생하는 예외를 처리할 수 있습니다.
package test.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler extends RuntimeException{
@ExceptionHandler(java.lang.NullPointerException.class)
public String handleException() {
return "error2";
}
}
@ExceptionHandler 와 @ControllerAdvice 의 우선순위
Controller 안의 @ExceptionHandler 가 먼저 처리됩니다.
그 다음에 @ControllerAdvice의 @ExceptionHandler 가 처리됩니다. ( 번외로 그 다음은 web.xml 에 정의된 error-page 가 호출됩니다. )
같은 @ControllerAdvice의 우선순위는 Ordered.HIGHEST_PRECEDENCE, Ordered.LOWEST_PRECEDENCE 로 결정합니다.
@ControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
class UserProfileExceptionHandler {
@ExceptionHandler(UserProfileException)
@ResponseBody
ResponseEntity<ErrorResponse> handleUserProfileException() {
....
}
}
@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE)
class DefaultExceptionHandler {
@ExceptionHandler(RuntimeException)
@ResponseBody
ResponseEntity<ErrorResponse> handleRuntimeException() {
....
}
}
728x90
'Spring Framework' 카테고리의 다른 글
[Spring] Ajax data를 Controller에서 받는 두 가지 방법 : Vo / Map (0) | 2021.06.11 |
---|---|
[Spring] @ExceptionHandler가 동작하지 않을 때 (0) | 2021.06.08 |
[LogBack] LogBack 설정 (0) | 2021.04.03 |
[Spring] MessageSource 사용법 (0) | 2021.04.02 |
[Spring] Controller Parameters (0) | 2021.03.02 |