ExceptionController

조태진·2023년 12월 24일
0

스프링 예외처리

목록 보기
3/4

이번에는 TjlogException을 예외 컨트롤러로 보내줘야해서
ExceptionController 클래스를 만들어주었다
코드를 보자면

public class ExceptionController {
@ExceptionHandler(TjlogException.class)
public ResponseEntity tjlogException(TjlogException e){
int statusCode = e.getStatusCode();

    ErrorResponse body  = ErrorResponse.builder().
            code(String.valueOf(statusCode))
            .message(e.getMessage())
            .validation(e.getValidation())
            .build();
            
    //응답코드와 바디를 제이슨으로 응답해준다
    ResponseEntity<ErrorResponse> responseEntity = ResponseEntity.status(statusCode)
            .body(body);
    return responseEntity;
}

}

이런 코드가있는데 코드 리뷰를해보자면
@RestControllerAdvice 애노테이션은 예외가 발생하면 이 애노테이션에 있는 컨트롤러로와서 예외처리를하고 json이나 xml같은 문법으로 리턴을 해준다

먼저 @ExceptionHandler 애노테이션은 예외가 발생한 클래스를 적어주는데 클래스가 예외가 터지면 이 애노테이션으로와서 예외 처리를한다

반환하는 값으로는 ResponseEntity를 썼는데 이 클래스를 사용하면
상태코드와 바디부분을 josn으로 응답으로 보낼 수 있다.

먼저 e.getStatusCode()로 상태코드를 선언해주고

ErrorResponse에있는 빌더패턴으로 TjlogException에서 온 예외들을 빌더클래스로 넣어준다

마지막으로 

ResponseEntity responseEntity = ResponseEntity.status(statusCode)
.body(body);

ResponseEntity에 상태코드와 바디를 넣어주어서 반환하면 응답으로 400에러와 에러메세지를 json으로 출력한다.

![](https://velog.velcdn.com/images/am0362320/post/ea2cf5f1-4328-4163-bef3-086dbcaeddb5/image.png)

0개의 댓글