Spring MVC에서 exception 발생 시 처리과정
Spring MVC의 모든과정에서 Excption이 발생 할 경우 ExceptionController를 통하여 관리한다.
ExceptionController에서 각 Excption별로 적절한 jsp로 이동시켜서 응답한다.
Exception Class와 ExceptionController 만들기
1. exception패키지를 만들어서 ExceptionController를 만들어준다.
또 원하는 예외사항을 받을 exception class를 만든다.
2.Exception Class에서 RuntimeException을 (extends)상속받는다.
3-1. 컨트롤러클래스에 @ControllerAdvice어노테이션 등록한다.
3-2. 예외사항을 처리할 메소드에 @ExceptionHandler(처리할 exception이담긴클래스)어노테이션 등록한다.
3-3 @ResponseStatus(HttpStaus.jsp명)은 브라우저에서의 네트워크의 응답상태도 정상상태가 아닌 예외상태로 표기해준다.
만든 exception처리 사용하기
파일 작성자만 삭제할 수 있는 기능을 구현하려고 한다.
삭제를 시도한 로그인된 id와 파일을 작성한 id가 다를 때 삭제를 시도하면 CanNotDeleteException객체를 만들어 던지게 하였다. CanNotDeleteException은 RuntimeException을 상속받고 있기에 던지는 것이 가능하다.
위에서 만들어진 CanNotDeleteException을
@ExceptionHandler로 인하여 경로를 받아서 ExceptionController의 처리를 받게된다.
ExceptionController에서 error/forbidden.jsp로 포워드 이동시키며 응답한다.