프로그램 실행 중 오류가 발생되면 프로그램이 중단되는데, 이 오류표시가 사용자 입장에서 보기 좋지 않다.
따라서, 오류 발생시 보여줄 jsp를 구성하고 이 jsp로 응답결과를 생성하여 브라우저로 전달한다.
@ExceptionHandler는 Controller마다 만들면 불편하기 때문에 오류에 관련된 핸들러가 Controller에 없다면 Global Exception Handler를 만든다.
예외처리하는 방법은 다음과 같다.
1. Exception을 implements하고 @ControllerAdvice를 가진 GlobalExceptionHandler.java 생성하고 @ExceptionHandler로 예외처리 내용 정하기
2. 에러처리를 위한 jsp파일 생성 후 return
3. ServletAppContext에 ComponentScan 등록하기
1. Exception을 implements하고 @ControllerAdvice를 가진 GlobalExceptionHandler.java 생성하고 @ExceptionHandler로 예외처리 내용 정하기
@ControllerAdvice
public class GlobalExceptionHandler extends RuntimeException {
@ExceptionHandler(java.lang.NullPointerException.class)
public String handleException() {
return "error2";
}
}
클래스 위에 @ControllerAdvice 를 정의하면, Controller의 일종으로 scan이 되어 Context에 등록된다.
@ExceptionHandler를 정의하고 exception의 내용을 쓰고 Controller처럼 return 할 곳을 정한다.
2. 에러처리를 위한 jsp파일 생성 후 return
error를 나타내는 jsp 파일 생성
3. ServletAppContext에 ComponentScan 등록하기
@ComponentScan("com.example.exception")
이제 TestController에 ExceptionHandler를 등록하지 않아도, 자동으로 예외 발생 시, GlobalExceptionHandler에서 처리된다.
'Spring > Spring MVC 5' 카테고리의 다른 글
Restful API (0) | 2020.05.28 |
---|---|
MyBatis (0) | 2020.05.27 |
Interceptor (0) | 2020.05.27 |
Validator 커스터마이징 (0) | 2020.05.27 |
JSR-303 / JSR-383 (0) | 2020.05.27 |