기존에 사용하고 있는 컨트롤러에 @ExceptionHandler(Exception.class) 라는
어노테이션을 추가하여 사용해도 되지만
예외처리를 하는 클래스를 따로 만들어주는 것이 많은 작업들을 수행하는데 훨씬 수월하다.
일단 코드를 보겠다.
클래스의 선언을 보면 @ControllerAdvice 어노테이션이 컨트롤러에서 발생하는 Exception을 전문적으로 처리하는
클래스라는 것을 명시하고,
common()이라는 메소드를 이용하여 Exception 타입으로 처리되는 모든 예외를 처리할 수 있도록 설정된다.
만약 예외가 발생하면 common메소드가 실행되어 error_common.jsp로 이동하게 된다.
하지만 우리는 이 오류내용을 error_common.jsp에 보이도록 하고 싶은데
@ControllerAdvice 클래스의 메소드는 Exception 타입만을 파라미터로 사용할 수 있기 때문에
둘 다 보낼 수 있는 ModelAndView를 사용해야 한다.
ModelAndView는 하나의 객체에 model 데이터와 view의 처리를 동시에 할 수 있는 객체다.
다음과 같이 바꾸도록 한다.
다음 error_common.jsp도 다음과 같이 작성해준다.
여기에서 에러의 큰 제목을 보고싶을때는 getMessage()를
에러의 자세한 설명을 보고 싶은 경우는 getStackTrace()로 가져와서 변수를 stack로 설정해준 후
stack의 toString을 작성해주면 에러의 자세한 내용을 볼 수 있다.
'JAVA > blog' 카테고리의 다른 글
게시판 목록페이지와 정보 유지 (0) | 2020.02.20 |
---|---|
페이징 구현시 정렬 (0) | 2020.02.20 |
페이징 순서 (0) | 2020.02.20 |
<c:forEach> 와 같은 jstl사용 선언문 (0) | 2020.02.18 |
redirect 처리 (0) | 2020.02.18 |