아이템 77. 예외를 무시하지 말라. - ksw6169/effective-java GitHub Wiki

예외를 무시하지 말라.

  • API 설계자가 메소드 선언에 예외를 명시하는 이유는 그 메소드를 사용할 때 적절한 조치를 취하라는 뜻이다.
  • 따라서 비검사 예외든, 검사 예외든 합당한 이유 없이 예외를 무시하지 말라.
try {
    ...
} catch (SomeException e) {
}

예외를 무시해야 할 때도 있다.

  • 예를 들어 FileInputStream 을 닫을 때가 그렇다. 입력 전용 스트림이므로 파일의 상태를 변경하지 않았으니 복구할 것이 없으며, 스트림을 닫는다는 건 필요한 정보는 모두 읽었다는 뜻이므로 남은 작업을 중단할 이유도 없다.
  • 예외를 무시하기로 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자.
Future<Integer> f = exec.submit(planarMap::chromaticNumber);

int numColors = 4;  // 기본값. 어떤 지도라도 이 값이면 충분하다.
try {
    numColors = f.get(1L, TimeUnit.SECONDS);
} catch (TimeoutException | ExecutionException ignored) {
    // 기본값을 사용한다. (색상 수를 최소화하면 좋지만 필수는 아니다.)
}

참고 자료

  • Effective Java 3/E
⚠️ **GitHub.com Fallback** ⚠️