Search

Item 75. 예외의 상세 메시지에 실패 관련 정보를 담으라

생성일
2023/08/15 06:41
챕터
10장 - 예외

요약

실패에 대한 원인을 분석하기 위해, 예외 메세지에 최대한 많은 실패 관련 정보를 담자.

예외 메세지에 실패 정보 담기

자바 시스템은 예외가 발생하면 예외의 스택 추적(stack trace) 정보를 자동으로 출력한다.
스택 추적은 예외 객체의 toString 메서드를 호출해 얻는데, 일반적으로 예외 클래스 이름 뒤에 상세 메세지가 붙는 형태이다.
이런 스택 추적은 실패의 원인을 분석하는 유일한 정보인 경우가 많고, 특히 해당 실패 상황을 재현하기 어려운 경우라면 실패 원인에 대한 정보를 가능한 많이 담아 반환해야한다.
이를 위해 실패가 발생할 때, 발생한 예외에 관여된 모든 매개변수와 필드 값을 실패 메세지에 담아야 한다.
예를 들면, IndexOutOfBoundsException이라면 범위의 최대, 최소값, 범위를 벗어난 인덱스 값을 담아야한다.
스택 추적에는 예외가 발생한 파일 이름과 줄번호까지 기록되어있기 때문에, 문서나 소스코드를 통해 얻을 수 있는 정보들은 예외 메세지에 담아 장황하게 늘어놓게 만들지 말자.
또한 예외는 실패와 관련된 정보를 얻을 수 있는 접근자 메서드를 제공하는 것이 좋다.
 이때 예외의 상세 메시지엔드 유저에게 제공될 오류 메시지를 혼동해서는 안된다. 엔드 유저에게 제공되는 메시지는 최대한 친절하게 완성된 문장으로 제공해주어야 할테지만, 예외 상세 메시지는 가독성보다는 담긴 내용이 최대한 핵심적인 내용이어야 하는 것이 중요하다.