스프링 부트에서 예외 처리 하는 세가지 방법 (출처)
-
Global Level using - @ControllerAdvice
-
Controller Level using - @ExceptionHandler
-
Method Level using - try/catch
Controller
@Controller
public class UserController {
@ExceptionHandler(UnAuthenticationException.class)
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public void unAuthentication() {
log.debug("UnAuthenticationException is happened!");
}
}
-
위의 방법은 Controller 내부에서 예외가 발생하면 처리한다.
-
@ExceptionHandler
를 통해 UnAuthenticationException에 대한 예외 처리를 한다. -
@ResponseStatus
를 통해 UNAUTHORIZED(401) 상태 값을 응답 한다.
ControllerAdvice
@ControllerAdvice
public class SecurityControllerAdvice {
@ExceptionHandler(UnAuthenticationException.class)
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public void unAuthentication() {
log.debug("UnAuthenticationException is happened!");
}
}
- 위의 방법은 모든 컨트롤러에 적용 된다.