책 컨트롤러의 수정 기능은 "읽기"와 거의 동일합니다. 책 정보를 읽어보고, 책 정보가 있다면 책 정보를 담은 화면을 보여주죠. 책 정보가 없다면 NoSuchElementException 오류가 납니다.
매 번 try - catch로 오류를 잡아내는 것보다, 만약 컨트롤러 메소드에서 오류가 날 경우 자동으로 특정 메소드가 실행된다면 더 편리하지 않을까 하는 생각에서 나온 것이 @ExceptionHandler 입니다.
NoSuchElementException이 발생하면 실행되는 메소드 noSuchElementExceptionHandler를 정의해 보겠습니다.
src/main/java > com.yse.dev.book > BookController.java
@ExceptionHandler(NoSuchElementException.class)
public ModelAndView noSuchElementExceptionHandler(NoSuchElementException ex) {
ModelAndView mav = new ModelAndView();
mav.setStatus(HttpStatus.UNPROCESSABLE_ENTITY);
mav.addObject("message", "책 정보가 없습니다.");
mav.addObject("location", "/book/list");
mav.setViewName("common/error/422");
return mav;
}