Spring MVC - 페이지 예외처리

2020. 9. 22. 20:22Java/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

 

@ExceptionHandlerController 마다 만들어 줘야 한다.

만약 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