저자가 얘기하는 운이 없는 경우 마주치게 될 코드는 아래와 같다.
1
2
3
4
5
6
try {
int i = 0;
while(true)
range[i++].climb();
}catch (ArrayIndexOutOfBoundsException e) {
}
위 코드가 운 없는 사람이 마주하게 되는 이유
- 가독성
- 무한루프를 돌고 돌아 배열 끝에서야 예외를 마주한다.
그런데 위 코드에서 예외가 필요할까?
아래 코드와 위 코드는 다른 일을 하지 않는다.
1
2
for (Mountain m : range)
m.climb();
일반적 반복문도 배열의 끝에 도달하면 종료된다.
따라서
- 예외는 말 그대로 예외 상황에서만 써야 한다
- 잘 설계된 API 라면 클라이언트가 정상적 제어 흐름에서 예외를 사용할 일이 없게 해야 한다.
결론 : 아무때나 예외를 남발하지 말자.