스택 추적
- 프로그램 실패시 자바 시스템은 그 예외의 스택 추적(stack trace) 정보를 자동으로 출력
- 스택추적 : 예외 객체의 toString 메서드를 호출해 얻는 무자열
- 스택추적이 얻을 수 있는 유일한 정보이므로 실패 원인에 관한 정보를 최대한 많이 담아야 한다.
- 예외 관여된 모든 매개변수
- 예외 관여된 모든 필드
- 보안 정보는 주의해야 한다(비밀번호X, 암호키 X)
- 관련 문서와 소스코드가 있다면 중복되는 정보를 장황하게 쓸 필요는 없다.
- 예외 상세 메시지(실패 원인파악에 필요한 정보 중요)와 최종 사용자에게 보여줄 오류 메시지(가독성 중요)를 혼동하면 안된다.
예시
public IndexOutOfBoundsException(int lowerBound, int upperBound, int index) {
super(String.format("최솟값: %d, 최댓값: %d, 인덱스: %d", lowerBound, upperBound, index));
this.lowerBound = lowerBound;
this.upperBoudn = upperBound;
this.index = index;
}
- 다음과 같이 범위의 최소, 최대, 범위를 벗어난 인덱스등 실패 원인과 관련된 모든 정보를 담아라
- 필요 정보를 예외 생성자로 받아 생성해놓는것도 하나의 방법이다
추가
- 예외는 실패와 관련된 정보를 얻을 수 있는 접근자 메서드를 적절히 제공하면 좋다.
- 접근자 메서든 예외 상황 복구에 유용할 수 있으므로 비검사 예외보다 검사 예외에 더 적합할것이다.
- 하지만 기본적으로 toString 이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하자 하는 원칙에 따라 비검사 예외라도 상세정보를 알 수 있게 접근자 메서드를 제공하는 것도 나쁘지 않을거같다.