- @ControllerAdvice : Global 예외 처리 및 특정 package, Controller 예외 처리
- @ExceptionHandler : 특정 Controller 예외 처리
@ControllerAdvice와 @ExceptionHandler의 활용
@RestControllerAdvice
public class GlobalControllerAdvice {
@ExceptionHandler(value = Exception.class) // 모든 예외에 대한 처리
public ResponseEntity exception() {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("");
}
@ExceptionHandler(value = ArithmeticException.class) // ArithmeticException에 대한 처리
public ResonseEntity arithmeticException() {
System.out.prinltn("Global Error");
return responseEntity.status(HttpStatus.BAD_REQUEST).body("");
}
}
예외 처리 대상 패키지 직접 지정
@RestControllerAdvice(basePackages = "com.example.controller") // 패키지 직접 지정
public class allControllerAdvice {
...
}
지정된 패키지 및 하위에 있는 모든 클래스에 대하여 예외를 처리할 수 있다.
예외 처리 대상 클래스 직접 지정
@RestControllerAdvice(basePackageClasses = memberController.class) // 클래스 직접 지정
public class memberControllerAdvice {
...
}
특정 클래스 내에서의 예외 처리
@RestController
@RequestMapping("/member")
public class memberController {
...
@ExceptionHandler(value = ArithmeticException.class)
public ResonseEntity arithmeticException() {
System.out.prinltn("Class Error");
return responseEntity.status(HttpStatus.BAD_REQUEST).body("");
}
}
- memberController에 ArithmeticException에 대한 예외 처리를 핸들링하고 있다.
- GlobalControllerAdvice에서 똑같이 예외 처리가 되어 있더라도, memberController에서 발생한 ArithmeticException에 대해서는 memberController 내의 메서드가 실행된다. ("Global Error"가 아닌 "Class Error"가 콘솔에 출력된다.)
'공부 기록 > Spring' 카테고리의 다른 글
[Spring] @Data 어노테이션 (0) | 2023.05.31 |
---|---|
[Spring] Filter (0) | 2023.05.31 |
[Spring] Validation(2) - Custom Validation (0) | 2023.05.01 |
[Spring] Validation(1) - Annotation (0) | 2023.05.01 |
[Spring] AOP의 활용 (0) | 2023.04.27 |