[TIL] 230907 @ExceptionHandler 로 예외처리하기!

CountryGirl·2023년 9월 7일
0

TIL

목록 보기
59/80

📌 @ExceptionHandler

: Controller 계층에서 발생하는 예외를 지정하고 핸들링할 수 있도록 해주는 Annotation

ex)

public class LoginException extends RuntimeException {
	private final ClientErrorCode errorCode;	
}

ClientErrorCode: Error Status Code, Error Message 를 만들어 놓은 enum (custom)

private final HttpStatus statusCode;
private final String msg;
@ExceptionHandler(LoginException.class)
public ResponseEntity<?> loginExceptionHandler(LoginException e) {
    return ResponseEntity
            .status(e.getErrorCode().getStatusCode())
            .body(new ErrorResponse(e.getErrorCode().getMsg()));
}



📌 @RestControllerAdvice

: 스프링 부트 애플리케이션에서 전역적으로 예외를 핸들링할 수 있도록 해주는 Annotation

@RestControllerAdvice
@Slf4j(topic = "error")
public class CustomExceptionHandler {

@ExceptionHandler(LoginException.class)
    public ResponseEntity<?> loginExceptionHandler(LoginException e) {
        return ResponseEntity
                .status(e.getErrorCode().getStatusCode())
                .body(new ErrorResponse(e.getErrorCode().getMsg()));
    }
    
@ExceptionHandler(S3Exception.class)
    public ResponseEntity<?> s3ExceptionHandler(S3Exception e) {
        return ResponseEntity
                .status(e.getErrorCode().getStatusCode())
                .body(new ErrorResponse(e.getErrorCode().getMsg()));
    }
    
    ...
}

여러 커스텀 예외를 만들어서 핸들링할 수 있다.

profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글