• 예외를 잡지 못해 프로그램이 실패하면 자바 시스템은 그 예외의 스택 추적 정보를 자동으로 출력한다.(예외 객체의 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;
}

+ Recent posts