예외를 무시하지 말라
기본적이지만 많은 사람들이 예외를 무시하곤 한다. 다음과 같이 빈 catch()문을 사용함으로서 예외를 무시한다.
try {
...
} catch(SomeException e) {
}
예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch블록을 비워두면 예외가 존재할 이유가 없어진다. 물로 예외를 무시해야 할 때도 있다. 예를 들어 FileInputStream을 닫을 때가 그렇다.
-> 파일의 상태를 변경하지 않았으니 복구할 것이 없으며, 스트림을 닫는다는 것은 필요한 정보는 이미 다 읽었다는 뜻이니 남은 작업을 중단할 이유도 없다.
-> 이런 경우에도 파일을 닫지 못했다는 사실을 로그로 남기는 것이 좋다.
만약 예외를 무시하기로 했다면 catch블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자.
Future<Integer> f = exec.submit(planarMap::chromaticNumber);
int numColors = 4;
try {
numColors = f.get(1L, TimeUnit.SECONDS);
} catch (TimeoutException | ExecutionException ignored) {
// 기본값을 사용한다. (색상 수를 최소화하면 좋지만, 필수는 아니다) .
}