Item 75 : 예외의 상세 메시지에 실패 관련 정보를 담으라
2021. 9. 11. 10:34
- 예외를 잡지 못해 프로그램이 실패하면 자바 시스템은 그 예외의 스택 추적 정보를 자동으로 출력한다.(예외 객체의 toString)
- 이 정보가 실패 원인을 분석하기 위한 유일한 정보다.
- 따라서 이 정보에 실패 원인을 가능한 많이 담아야 반환해야한다.
실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수와 필드의 값을 실패 메시지에 담아야한다.
- IndexOutOfBoundsException에서는 최솟값, 최댓값, 그리고 범위를 벗어났다는 정보가 필요하다.
- 정보는 너무 장황할 필요 없고 추적 가능한 정도만 담으면 된다.
- 예외의 상세 메시지와 사용자에게 보여줄 메시지는 따로 구분하자.
- 실패를 적절히 포착하려면 필요한 정보를 예외 생성자에서 모두 받아서 상세 메시지까지 미리 생성해놓는 방법도 괜찮다
/**
* IndexOutOfBoundsException을 생성한다.
*
* @param lowerBound 인덱스의 최솟값
* @param upperBound 인덱스의 최댓값 + 1
* @param index 인덱스의 실제값
*/
public IndexOutOfBoundsExcpetion(int lowerBound, int upperBound, int index) {
//실패를 포착하는 상세 메시지 생성
super(String.format(
"최솟값 : %d, 최댓값 : %d, 인덱스 %d",
lowerBound, upperBound, index));
//프로그램에서 이용할수 있도록 실패 정보 저장
this.lowerBound = lowerBound;
this.upperBound = upperBound;
this.index = index;
}
'책 > 이펙티브자바' 카테고리의 다른 글
Item 77 : 예외를 무시하지 말라 (0) | 2021.09.13 |
---|---|
Item 76 : 가능한 한 실패 원자적으로 만들라 (0) | 2021.09.12 |
Item 74 : 메소드가 던지는 모든 예외를 문서화하라 (0) | 2021.09.10 |
Item 73 : 추상화 수준에 맞는 예외를 던져라 (0) | 2021.09.09 |
Item 72 : 표준 예외를 사용하라 (0) | 2021.09.08 |