728x90
예외 페이지는 사용자에게서 예외가 발생하였을 때 예외 페이지로 이동하여 안내함으로 써 사용자 편의성을
증대시키기 위해 설정한다.
언제 발생하는가?
ex) 불가능한 요청, 존재하지 않는 페이지 등등
에러 처리
- 에러 자체가 발생되지 않게 선처리(유효성 검사)
에러가 발생하더라도, 넘어갈 수 있게(try-catch) 처리
vs
에러 페이지 설정
- 에러는 발생할수있지만
에러 발생 시, 왜 발생했는지 -1
어디로 가야 하는지 안내 -2 (가야 하는 페이지)
에러 페이지 설정은 @과 xml로 할 수 있다.
1) @ 설정
DispatcherServlet-servlet.xml에 @을 앞으로 사용할 거라고 알려줘야 한다. (Namespace -> mvc)
이후 DispatcherServlet-servlet.xml 내부에 <mvc:annotation-driven /> 작성
에러 페이지 @ 설정의 단점은 복잡하다는 것으로 사용하려면 예외처리 클래스를 1개 이상 만들어야 한다.
@ControllerAdvice("예외범위 설정") - 설정할 클래스
@ExceptionHandler("에러 종류") - 에러에 따라 발생시킬 메서드
예시로 작성한 클래스
package com.kim.biz.common;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice("com.kim.biz") // CommonExceptionHandler를 객체화해주는 @
public class CommonExceptionHandler {
@ExceptionHandler(NullPointerException.class)
public ModelAndView aException(Exception e) { // 널포인터 익셉션
ModelAndView mav = new ModelAndView();
mav.addObject("exception",e); // 왜 발생했는지
mav.setViewName("/error/error.jsp"); // 어디로 가야하는지
return mav;
}
@ExceptionHandler(ArithmeticException.class)
public ModelAndView bException(Exception e) { // 수학적인 문제
ModelAndView mav = new ModelAndView();
mav.addObject("exception",e); // 왜 발생했는지
mav.setViewName("/error/error.jsp"); // 어디로 가야하는지
return mav;
}
@ExceptionHandler(Exception.class)
public ModelAndView cException(Exception e) { // 미확인 예외
ModelAndView mav = new ModelAndView();
mav.addObject("exception",e); // 왜 발생했는지
mav.setViewName("/error/error.jsp"); // 어디로 가야하는지
return mav;
}
}
2) XML 설정
@에 비해 간편하며 DispatcherServlet-servlet.xml 내부에 작성한다.
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings"> // 스프링 내부 변수이므로 변수의 이름은 고정
<props>
<prop key="에러 종류">이동시킬 에러 페이지</prop>
<prop key="java.lang.NullPointerException">error/error.jsp</prop>
<prop key="java.lang.ArithmeticException">error/error.jsp</prop>
<prop key="java.lang.Exception">error/error.jsp</prop>
</props>
</property>
</bean>
728x90
'Spring' 카테고리의 다른 글
Mybatis 프레임워크 (1) | 2022.10.04 |
---|---|
Spring 다국어 처리 (0) | 2022.09.29 |
Spring 이미지 업로드 (0) | 2022.09.27 |
2-Layered 아키텍처 (0) | 2022.09.26 |
Spring 다양한 @(어노테이션) 설정 (0) | 2022.09.23 |