기존에 사용하고 있는 컨트롤러에  @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

+ Recent posts