들어가며
예외가 발생했을 때 예외에 실패 원인에 관한 정보를 가능한 많이 담아 반환하는 일은 아주 중요하다. 실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수와 필드의 값을 실패 메세지에 담아야 한다. 예를 들어 IndexOutOfBoundsException의 상세 메세지는 범위의 최소값, 최대값, 범위를 벗어난 인덱스값을 담아야 한다. 스택 추적에는 예외가 발생한 파일 이름과 줄번호는 물론 스택에서 호출한 다른 메소드들의 파일 이름과 줄번호까지 정확히 기록되어 있는게 보통이다. 그렇기 때문에 문서와 소스코드에서 얻을 수 있는 정보는 담아봐야 군더더기가 될 뿐이다.
예외의 상세 메세지와 최종 사용자에게 보여줄 오류를 혼동해서는 안된다. 최종 사용자에게는 적절한 안내 메세지를, 예외 메세지는 가독성보다는 담긴 내용의 질이 중요하다.
예외는 실패와 관련된 정보를 얻을 수 있는 접근자 메소드를 적절히 제공하는 것이 좋다. 포착한 실패 정보는 예외 상황을 복구하는데 유용하기 때문이다.