본문 바로가기

Spring

SpringBoot - ExceptionHandler

스프링 부트에서는 ExceptionHandler기능을 제공합니다.

스프링 부트로 공부를 하다 보면 위와 같은 에러 페이지를 많이 보지 않으셨나요? 

위의 에러페이지는 에러가 발생했을 때 스프링 부트가 기본으로 제공하는 에러 핸들러가 처리하는 결과입니다.

이러한 에러 핸들링에 대한 로직은 BasicErrorController에서 확인 할 수 있습니다! (나중에 자세히 확인해보기)

이 글에서는 예제를 통해 ExceptionHandler를 만들어보도록 하겠습니다.

컨트롤러를 하나 만들어서 localhost:8080/hello로 클라이언트가 요청했을 때, UserException()을 발생시키도록 했습니다.

UserException()은 제가 직접 만든 Exception이니까 따로 클래스로 만들어 줘야 합니다.

RuntimeExecpetion을 상속 받아 사용자 정의 예외 클래스를 간단하게 만들었습니다.

ExceptionHandler 어노테이션을 통해  UserException이라는 예외가 발생하면 이 핸들러를 사용하도록 만들어 줍니다.

@ResponseBody를 통해 json으로 리턴 받아 결과를 확인해보도록 하겠습니다. AppError를 리턴하도록 하였는데

AppError 클래스를 빠르게 만들어 봅니다.

이제 클라이언트가 /hello로 요청을 하게 되면 UserException 에러가 발생하게 되고 UserException 에러가 발생하면

우리는 ExceptionHandler를 통해 AppError를 리턴하는 에러 핸들링을 통해 아래와 같은 결과가 나타났습니다.

위 예제에서는 UserController에서 발생하는 예외만 핸들링할 수 있을 텐데 Global Exception Handler를 만들려면??

어떻게 해야 할까요? @ControllerAdvice 를 추가한다면 전역적으로 발생하는 예외를 처리하는 ExceptionHandler를

만들 수 있습니다.

 

출처 : 백기선님 강의