1. 예외를 무시하지 말라
- 너무 뻔한 조언 같지만 대부분의 사람들이 어기고 있는 것이다.
- API 설계자가 메서드 선언에 예외를 명시하는 이유는 그 메서드를 사용할 때 적절한 조치를 취해달라고 말하는 것이다.
- 안타깝게도 예외를 무시하기란 매우 쉽다. 다음의 코드만 추가하면 예외를 무시할 수 있게 된다.
try {
...
} catch (Exception e) {
// do notthing
}
- 예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두게 되면 예외가 존재할 이유가 없어진다.
- 비유하자면 화재경보를 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 알지 못하게 하는 것과 같다.
2. 예외를 무시해야 하는 경우
- 예외를 무시해야 하는 경우도 있다.
FileInputStream
을 닫을 때가 그렇다. 파일의 상태를 변경하지 않았으니 복구할 것이 없으며 필요한 정보는 이미 다 읽었다는 뜻이니 남은 작업을 중단할 이유도 없다.
- 혹시나 동일한 예외가 계속 발생한다면 조사해볼 필요가 있으니 파일을 닫지 못했다는 사실을 로그로 남기는 것도 좋다.
- 예외를 무시해야 한다면
catch
블록 내부에 그렇게 결정한 이유를 주석으로 상세하게 남기고, 예외 변수의 이름도 ignored
로 바꿔놓도록 하자.
3. 예외를 무시할 시 일어날 수 있는 일
- 예외를 무시해 버린다면 해당 프로그램은 오류를 내재한 체 동작하게 된다. 그러다 어느 순간 문제의 원인과 아무 상관 없는 곳에서 갑자이 죽어버릴 수 있다.
- 예외를 처리하면 오류를 완전히 피할 수 도 있으며 무시하지 않고 바깥으로 전파하게만 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게는 할 수 있다.