2020. 9. 22. 20:22ㆍJava/Spring
예외처리
▪보통 웹 애플리케이션에서 오류가 발생하면 웹 브라우저에 오류 메시지가 나타나는데 이는 사용자 입장에서 매우 보기 좋지 않다.
▪보통 오류 발생시 보여줄 jsp를 구성하고 오류 발생 시 이 jsp로 응답 결과를 생성하여 브라우저로 전달하게 된다.
@ExceptionHandler
▪Controller 에서 @ExceptionHandler를 통해 메서드를 정의해 주면 오류 발생 시 이 메서드를 자동으로 호출 해준다.
▪이 메서드가 반환하는 JSP 정보를 통해 응답결과 화면을 만들고 이 응답결과를 브라우저로 전달하게 된다.
▪이 때 사용하는 JSP를 오류 페이지용으로 만들어주면 된다.
@Controller
public class TestController {
@GetMapping("/test1")
public String test1() {
int i = 1/0;
return "test1";
}
}
위와 같이 오류를 내고서 실행을 하고 test1로 접속을 하면 아래와 같은 오류화면이 나온다.
해당 화면은 사용자들에게 적절치 않으므로 오류시 보여줄 화면을 지정 가능하다.
@ExceptionHandler(ArithmeticException.class)
public String error1() {
return "error1";
}
위와 같이 메서드를 지정하면 ArithmeticException 발생 시 error1 화면을 보여준다.
Global Exception Handler
▪@ExceptionHandler는 Controller 마다 만들어 줘야 한다.
▪만약 Controller 마다 발생 가능한 예외들이 있다면 한번만 정의해서 사용하는것이 효율적이다.
▪Global Excpetion Handler를 구현하면 Controller에 정의한 ExceptionHandler 중에 해당 오류에 대한 것이 없다면 Global Exception Handler로 이동하여 예외에 관련된 처리를 해주게 된다.
새롭게 패키지를 만들어 메소드를 생성한다.
@ControllerAdvice
public class GlobalExceptionHandler extends RuntimeException{
@ExceptionHandler(ArithmeticException.class)
public String error() {
return "error1";
}
}
위처럼 RuntimeException를 상속받아 @ExceptionHandler를 설정하면 모든 controller에서 발생한 ArithmeticException 오류에 대해 error1이 보여진다.
'Java > Spring' 카테고리의 다른 글
Spring - hikari cp 세팅하기 (0) | 2021.02.19 |
---|---|
Spring MVC - RestController (0) | 2020.09.26 |
Spring MVC - Interceptor (0) | 2020.09.21 |
Spring MVC - Validator 커스터마이징 (0) | 2020.09.20 |
Spring MVC - JSR-380 어노테이션 정리 (0) | 2020.09.20 |