Java ‐ 예외를 무시하지 말라[Effective Java Item 77] - thought-corner/Backend-PlayGround GitHub Wiki

예외를 무시해야 할 때도 있을까?

  • 예외를 무시해야 할 때가 있을 수 있다.
try {
  ...
} catch (Exception e) {
  // catch 블록을 비워두면 예외가 무시된다.
  // catch 블록을 비워두면 예외가 존재할 이유가 없어진다.
}

1. 인터럽트 상태 변경 시(Thread.sleep)

  • 특정 쓰레드를 잠시 멈추게 했다가 깨우는 로직에서 쓰레드가 종료되는 시점이라 더 이상 인터럽트 예외를 처리할 필요가 없을 때 무시하곤 한다.

2. 파싱 실패 시 기본값 반환

  • 숫자 포맷이 잘못되었을 때 에러를 내는 대신, 무조건 기본값(예: 0)을 반환해야 하는 가벼운 유틸리티 로직일 때 사용한다.

그럼 예외를 어떻게 처리해야할까?

1. 최소한 로그라도 남겨라

  • 정말로 무시해도 되는지 확신이 서지 않는다면, 비워두지 말고 최소한 log.warn()이나 log.error()로 흔적을 남겨야 한다.

결론

  • 예외는 반드시 처리하거나 처리하지 못하겠다면 상위 메서드로 던지거나, 정말 무시해야 한다면 ignored 변수명과 명확한 이유를 남긴다.