티스토리 뷰

반응형

예외 처리란, 예외 상황에 적절한 처리를 하기 위해 존재 → 무시하지 말자.

  • 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) {
    // 기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다)
}

 

결론

모든 예외는 무시되면 프로그램은 오류를 내재한 채 동작하게 된다.

그러다 어느 순간 문제의 원인과 상관없는 곳에서 프로그램이 죽을 수도 있다.

예외를 적절히 처리하여 오류를 피하게 하자.

아니면 바깥으로만 전파하게 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게 할 수 있다.

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday