8.4. 책 컨트롤러에 @ExceptionHandler 추가하기

책 컨트롤러의 수정 기능은 "읽기"와 거의 동일합니다. 책 정보를 읽어보고, 책 정보가 있다면 책 정보를 담은 화면을 보여주죠. 책 정보가 없다면 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;  
}