@ControllerAdvice를 사용하여 예외처리 하는 방법을 알아보자.
@ControllerAdvice
public class ExceptionControllerAdvice {
@ExceptionHandler(Exception.class)
public String handleException(Exception e, Model model) {
model.addAttribute("msg", "에러 발생");
return "error/error";
}
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public String handle404(NoHandlerFoundException ex, Model model) {
model.addAttribute("msg", "페이지 찾을 수 없음");
return "error/error";
}
}
handleException 메서드에서 Exception.class를 받으며 모든 Exception을 먼저 처리를 했는데
왜 handle404라는 Handler를 더 작성했을까?
그 이유는 404는 Exception이 아니라 ERROR이기 때문이다.
404에러는 따로 처리해주어야함에 주의하자.
<참고>
web.xml (Dispatcher suvlet)에 아래와 같은 설정을 해주어 NoHandlerFoundException을 사용.
만약 핸들러를 찾을 수 없으면 Exception을 대신 던져준다 (default 값은 false)
<init-param>
<param-name>throwExceptionIfNoHandlerFound</param-name>
<param-value>true</param-value>
</init-param>
'Backend > Spring' 카테고리의 다른 글
[JPA] javax.persistence.EntityNotFoundException: Unable to find ... 에러 해결 (0) | 2023.02.22 |
---|---|
[Spring] @RequestParam (0) | 2022.11.03 |
[Spring] servlet-context.xml의 resources (0) | 2022.10.24 |