프로그래밍/Spring

[Spring] 예외 처리

cho____sh 2020. 4. 6. 02:31
728x90

예외처리

프로그램 실행 중 오류가 발생되면 프로그램 실행이 중단된다.

Java에서는 이를 방지하기 위해 오류 처리라는 개념을 두었다.

보통 웹 어플리케이션에서 오류가 발생하면 웹 브라우저에서 오류 메시지가 나타나고, 이는 사용자 입장에서 보기가 안 좋다.

이를 해결하기 위해, 오류 발생시 보여줄 jsp 페이지를 구성하고 오류 발생시 이 jsp로 응답결과를 생성하여 전달하게 된다.

 

@ExceptionHandler

Controller에서 @ExceptionHandler를 통해 메서드를 정의해주면 오류 발생시 메서드를 자동으로 호출해준다.

이 메서드가 반환하는 jsp 정보를 통해 응답 결과를 만들고 브라우저로 전달한다.

jsp를 오류 페이지 용으로 만들어서 전달하면 된다.

 

특정 Controller에 아래와 같이 구현해주면 된다.

@ExceptionHandler(ArrayIndexOutOfBoundsException.class)

       public String exception1() {

               return "error1";

       }

 

Global Exception Handler

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

만약 Controller마다 발생 가능한 예외들이 있다면, 한 번만 정의해서 사용하는 것이 효율적이다.

Global Exception Handelr를 구현하면 Controller에 정의한 ExceptionHandler 중에 해당 오류에 대한 것이 없다면 Global Exception Handelr로 이동하여 예외에 관련된 처리를 해준다.

 

따로 패키지를 만들어서 그곳에 Global 에러 처리 용 클래스를 만든다.

아래와 같이 구현하고 servletContext에 스캔할 페이지를 등록한다.

@ComponentScan("kr.co.exception")

 

글로벌 처리는 아래와 같이 구현한다.

@ControllerAdvice

public class GlobalExceptionHandler extends RuntimeException{

    

     @ExceptionHandler(java.lang.NullPointerException.class)

     public String handleException() {

             return "error2";

     }

}

 

728x90