API 예외 처리 (2) - 추상 클래스

달래·2024년 1월 24일
0

Spring

목록 보기
5/7

앞선 API 예외 처리에서는 일반적인 예외를 처리하는 방법을 알아보았습니다.
하지만 어플리케이션 비즈니스 로직 뿐만 아니라, 도메인 비즈니스 로직에서 오류를 발생시키고 싶다면 어떻게 해야하는 걸까요?
controller advice를 계층마다 모두 생성해주어야 하는 것일까요?

만약 이게 모듈별로 있다면 어떨까요? 끔찍한 중복 코드가 발생할 것입니다.

이럴 때 사용할 수 있는 방법이 있습니다.

추상 exception 클래스

추상 클래스를 활용해서, exception을 객체 지향적으로 처리할 수 있습니다.
아이디어는 간단합니다.
추상 클래스가 exception 처리에 대한 규격을 설정합니다.
이후로 필요한 custom exception 클래스들은 이 추상 클래스를 상속해서, 규격에 맞춰 구현만 다르게 해주면 됩니다.

한 예시로 애플리케이션 계층에서 비즈니스 로직의 예외를 처리를 해야한다고 합시다.

우선, 다음과 같이 추상 클래스를 생성해 줍니다.

public abstract class ApiException extends RuntimeExcpetion {

}

@RestControllerAdvice
public class ApiExceptionAdvice {
    
    /* 공통 예외 */
    @ExceptionHandler(MmdApiException.class)
    public ResponseEntity<ExceptionResponse> handleMmdApiException(MmdApiException e) {
        return ResponseEntity.status(e.getStatus())
                .body(new ExceptionResponse(e.getMessage(), LocalDateTime.now()));
    }
}
profile
아좌잣~!

0개의 댓글