반응형
@ExceptionHandler
특정 예외가 발생할 경우 발생한 요청을 처리해주는 핸들러
EventException
이라는 클래스를 만든다. (RuntimeException 상속)public class EventException extends RuntimeException { }
@ExceptionHandler 정의
@ExceptionHandler public String eventErrorHandler(EventException exception, Model model) { model.addAttribute("message","event error"); return "error"; } @ExceptionHandler public String runtimeErrorHandler(RuntimeException exception, Model model) { model.addAttribute("message","runtime error"); return "error"; } ... @GetMapping("/events/form/name") public String eventsFormName(Model model) { throw new EventException(); // 위에 두개가 있을 경우 타입이 구체적으로 맞는 핸들러를 실행 }
// 두개를 모두 처리하고 싶을경우는 아래처럼 // argument에서는 상위 클래스 타입으로 와야한다. (RuntimeException) @ExceptionHandler({EventException.class, RuntimeException.class}) public String eventErrorHandler(RuntimeException exception, Model model) { model.addAttribute("message","event error"); return "error"; }
error.html
생성<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Error</title> </head> <body> <div th:if="${message}"> <h2 th:text="${message}"></h2> </div> </body> </html>
예외 발생 처리
Rest api에서 사용할 때
ResponseEntity
를 리턴타입으로 사용할 수 있다.
@ExceptionHandler public ResponseEntity errorHandler() { return ResponseEntity.badRequest().body("can't create event as ..."); }
반응형
'Web > Spring' 카테고리의 다른 글
[Spring Boot] 간단한 로그인 기능 구현 - Spring Security (2) | 2020.05.03 |
---|---|
[Spring MVC] @ControllerAdvice로 전역 컨트롤러 만들기 (0) | 2020.02.05 |
[Spring MVC] @InitBinder 사용하기 (1) | 2020.02.04 |
[Spring MVC] @ModelAttribute의 또 다른 사용 (0) | 2020.02.04 |
[Spring MVC] @ResponseBody와 ResponseEntity (0) | 2020.01.24 |