티스토리 뷰
반응형
예외 처리란, 예외 상황에 적절한 처리를 하기 위해 존재 → 무시하지 말자.
- catch 블록 비워두기
try {
// ...
} catch(Exception 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) {
// 기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다)
}
결론
모든 예외는 무시되면 프로그램은 오류를 내재한 채 동작하게 된다.
그러다 어느 순간 문제의 원인과 상관없는 곳에서 프로그램이 죽을 수도 있다.
예외를 적절히 처리하여 오류를 피하게 하자.
아니면 바깥으로만 전파하게 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게 할 수 있다.
반응형
'Java > Effective Java' 카테고리의 다른 글
[Effective Java] 79.과도한 동기화는 피하라 (0) | 2022.04.19 |
---|---|
[Effective Java] 78.공유 중인 가변 데이터는 동기화해 사용하라 (0) | 2022.04.19 |
[Effective Java] 76.가능한 한 실패는 원자적으로 만들라 (0) | 2022.04.16 |
[Effective Java] 75.예외의 상세 메세지에 실패 관련 정보를 담으라 (0) | 2022.04.16 |
[Effective Java] 74.메서드가 던지는 모든 예외를 문서화하라 (0) | 2022.04.16 |
댓글