본문 바로가기
🍃SpringFrameworks/SpringMVC

[SpringMVC] 예외 처리 (Exception)

by inbeom 2023. 8. 19.
728x90

💡 예외처리

Controller레벨에서 처리 - @ExceptionHandler

@RestController
public class TestController {
    // 예외 핸들러
    @ExceptionHandler(Exception.class)
    public String controllerExceptionHandler(Exception e) {
        return "/error/404";
    }

    @GetMapping("hello1")
    public String hello1() {
        throw new TestException("hello1 에러 "); // 강제로 예외 발생
    }
}

 

Global 레벨에서의 처리 - @ControllerAdvice

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public String testExceptionHandler(Exception e) {
        return "/error/404";
    }
}

StatusCode : 400~은 클라이언트 에러, 500~은 서버에서 에러가 발생

 

💡 예외처리 우선순위

  1. 컨트롤러 메서드 내에서 try-catch처리
  2. 컨트롤러 @ExceptionHandler메서드가 처리
  3. @ControllerAdvice클래스의 @ExceptionHandler메서드가 처리
  4. 예외 종류별로 뷰 지정 - SimpleMappingExceptionResolver
  5. 응답 상태 코드별로 뷰 지정 - <error-page>
728x90