//예외를 완전히 잘못 사용한 예

try {
    int i = 0;
    while(true)
        range[i++].climb();
} catch (ArrayIndexOutOfBoundsException e) {    
}
  • 코드 자체가 직관적이지 못한다는 것 부터 잘못된 코드이다.
  • 배열의 원소를 순회하는데 예외를 사용해 루프를 종료하고 있다. (도대체 왜?)
//위 코드의 관용구
for (Mountain m : range)
    m.climb();

잘못된 이유

  • 예외는 예외 상황에 쓸 용도로 설계되었음
  • 코드를 try-catch 블록 안에 넣으면 JVM이 적용할 수 있는 최적화가 제한된다.
  • 배열을 순회하는 표준 관용구는 앞서 걱정한 중복 검사를 수행하지 않는다. JVM이 최적화해줌

 

 

예외는 오직 예외 상황에서만 써야한다.

절대로 일상적인 제어 흐름용으로 쓰여선 안된다.

+ Recent posts