try{
int i = 0;
while(true){
range[i++].climb();
}
}catch(ArrayIndexOutBoundsException e){
//올바르지 않은 코드
}
의미없는 예외 처리는 하지 말자.
검사 예외를 던지는 대신 상태 검사 메서드를 활용하라
//리팩터링 전
try{
obj.action(args);
}catch (TheCheckedException e){
...
}
//리팩터링 후
if(obj.actionPermitted(args)){
obj.action(args);
}else{
...
}
Checked Exception은 항상 따로 선언하고, Javadoc의
@throws 태그를 사용해서 문서화 하도록 한다.
호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다.
Catch 블럭에서는 반드시 필요한 일을 할 것
만약 예외를 무시하기로 했다면 catch 블록 안에 명확한 이유를 주석으로 남기고, 예외 변수의 이름도 ignored로 바꿔라