예외는 진짜 예외 상황에만 사용하라. try { int i = 0; while(true) range[i++].climb()' catch(ArrayIndexOutOfBoundsException e) {} 위 코드는 직관적이지 않다. 무한 루프를 돌다가 배열 끝에 도달하면 ArrayIndexOutOfBoundsException을 발생시킨다. for(Mountain m : range) { m.climb(); } 위와 같이 작성하면 개발자가 이해하기 더 쉬워진다. try ~ catch를 이용해서 예외를 잡을 필요도 없어지고 배열의 끝에 도달했을 때 예외를 발생시켜서 종료할 필요도 없어진다.
또한 위 코드가 성능도 더 좋다. JVM은 배열에 접근할 때마다 경계를 넘지 않는지 검사하는데 일반적인 반복문도 배열 경계에 도달하면 종료한다. try ~ catch를 명시하면 검사를 하는 일이 중복되므로 하나를 생략한 것이다.
위 try ~ catch 문의 문제점은 몇 가지가 있다. 코드를 try ~ ...
#
아이템69
#
예외
#
이펙티브자바
#
자바
#
자바예외