예외를 잡지 못해 프로그램이 실패하면 자바 시스템은 그 예외의 스택 추적(stack trace) 정보를 자동으로 출력한다. 스택 추적은 예외 객체의 toString 메서드를 호출해 얻는 문자열로, 보통은 예외의 클래스 이름 뒤에 상세 메시지가 붙는 형태다.

예외 메시지가 정확해야 분석하는 다른 개발자도 빠르게 어떤 상황인지 파악이 가능하다. 또한 재현하기 어려운 상황에 발생한 예외일 경우 더더욱 정확한 메시지가 중요시된다. 따라서 예외의 toString 에 실패 원인에 관한 정보를 가능한 많이 담아 반환하는 것은 아주 중요하다. 달리 말하면, 사후 분석을 위해 실패 순간의 상황 을 정확히 포착해 예외의 상세 메시지를 담아야 한다.

실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수필드 의 값을 실패 메시지에 담아야 한다. 예를 들어 리스트의 인덱스 범위를 벗어난 예외가 발생할 경우, 리스트의 최소 인덱스 값, 최대 인덱스 값, 접근하려 했던 인덱스 정보 등을 포함해야 한다. 다만, 모든 값을 포함한다 하더라도 보안에 민감한 정보는 제외해야 한다. 문제를 진단하고 해결하는 과정에서 스택 추적 정보는 많은 사람이 볼 수 있으므로 비밀번호나 암호키같은 정보는 포함하면 안된다.

관련 데이터를 모두 담는 것이 좋지만 장황할 필요는 없다. 문서 또는 소스코드에서 확인할 수 있는 내용은 제외한다.