조종 다음은 개발
article thumbnail

 

 

예외 메시지를 어떻게 관리하면 좋을까?

우테코 레벨 1 미션을 진행 중 예외 메시지를 처리하는 과정에 예외 메시지를 별도로 관리해 주는 것이 좋을지 고민이 되었다.

입력 단계에서 예외 발생시 그에 맞는 메시지를 넣어주었다.

미션을 진행하는 중에는 "일단 메시지를 직접 넣어주고 나중에 리팩터링하자" 라는 생각에 위와 같이 일단 예외 메시지를 직접 넣어주었다.

그리고 기능을 구현한 이후 다시 찾아와서 고민을 하였다.

 

예외 메시지를 별도의 상수로 관리해주는게 좋을까??

 

예외 메시지를 별도로 관리하는 방식

나는 과거에 프리코스 동안 진행했던 미션에서는 모든 메시지를 상수로 관리해 주었다.

프리코스 자동차 경주 미션에서는 위와 같이 메시지를 별도의 객체에서 상수로 관리했다.

왜 이때는 별도의 객체에서 관리해 주는 방식을 선택했을까??

당시에 이 방식을 선택한 이유는 다음과 같다.

 

1. 변경 사항이 발생했을 때 수정하기 편리하다.

비슷한 예외 메시지를 사용하는 곳이 많아서 별도의 상수로 만들어두고 사용하고 있었다.

그래서 만약 빈 값 입력에 대한 예외 메시지 수정 시 한 곳에서 관리하기 때문에 쉽게 변경할 수 있다.

 

2. 예외 테스트 시 메시지도 같이 테스트할 수 있다.

위에서 `hasMessage` 메서드를 활용해서 예외 메시지에 대한 테스트도 같이 해줄 수 있는 장점이 있다.

 

3. 메시지를 한 곳에서 관리해 주기 때문에 메시지의 통일성을 지킬 수 있다.

만약 여러 곳에서 메시지를 관리한다면 매번 사용할 때마다 다른 어투로 예외 메시지를 적을 가능성이 있다.

(예, 어떤 곳에서는 구어체를 쓰고 어떤 곳에서는 문어체를 쓸 가능성이 있다)

그런데 만약 한 곳에서 메시지를 관리하게 된다면 문장의 통일성을 줄 수 가능성이 높다.

 

 

각각의 도메인에서 예외 메시지를 관리하는 방식

 

그에 반에 도메인에서 관리하는 방식은 어떤 장점이 있을까?

1. 메시지를 관리할 별도의 객체를 생성하지 않아도 된다.

별도의 `ExceptionMesssage` 와 같은 메시지를 관리하는 객체를 생성하지 않아도 되어서 객체의 생성을 줄일 수 있다.

이는 불필요한 복잡성을 줄이는 것으로 볼 수 있다.

 

2. 코드를 읽는 입장에서 어떤 예외 메시지를 출력할지 바로 파악이 가능해 가독성에 도움이 될 수 있다.

도메인 객체를 읽는 도중에 만약 예외 메시지가 상수로 되어 있다면, 해당 상수를 정의한 곳으로 찾아가서 어떤 예외 메시지인지 확인하는 과정이 추가로 필요하다. 그런데 만약 문자열 그대로 입력 되어 있다면 바로 어떤 메시지인지 확인이 가능하기 때문에 가독성에서 어느 정도 도움이 될 수 있다.

 

 

그래서 어떤 방식이 좋아?? 🧐

두 방식 다 장단점이 있는 것 같다. 상황에 맞게, 또 본인이 사용하고 싶은 방식을 선택하는 게 좋을 것 같다.

어차피 실무 프로젝트에서는 순수자바 대신 스프링과 같이 사용할 경우가 대부분이기 때문에 예외 처리 방식은 달라진다.

따라서 너무 고민하지 말고 그냥 본인이 편한 방식을 사용하자 ㅎㅎ

profile

조종 다음은 개발

@타칸

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!