카테고리:

업데이트:

1. 들어가기

“예시를 무시하지 말라”

이 말은 너무 뻔한 조언이지만 많은 프로그래머들이 지키지 않는 것 중 하나입니다.

바로 이렇게 말이죠

   try {
      ...
   } catch (SomeException e) {

   }

2. catch 블록의 중요성

catch 블록을 비워두면 예외가 존재할 이유가 없어집니다.

예를 들어 건물의 화재 경보기를 끈다면 화재가 발생해도 알지 못하기에 큰 참사가 이어질 수 있습니다.

그러므로 catch 블록은 되도록 비워두지 않도록 합니다.

3. 예외를 무시해도 되는 상황

대부분 예외는 무시하지 말아야 합니다.

하지만 그 예외도 존재하는데 FileInputStream을 닫을 때를 예로 들 수 있습니다.

입력 전용 스트림이기에 파일의 상태를 변경하지 않았으니 복구할 것이 없고,

필요한 정보는 이미 다 읽었다는 뜻이므로 남은 작업을 중단할 이유가 없기 때문입니다.

이러한 경우에는 catch 블록 안에 무시하기로 한 결정을 주석으로 남기고

예외 변수 이름도 ignored로 바꾸도록 합니다.

   Future<Integer> f = exec.submit(planarMap::chromaticNumber);
   int numColors = 4; // 기본값

   try {
      numColors = f.get(1L, TimeUnit.SECOND);
   } catch (TimeoutException | ExcutionException ignored) {
      // 기본값을 사용한다.
   }

4. 정리

이번 내용은 검사와 비검사 예외 모두에 적용됩니다.

빈 catch 블록을 못 본 척 지나치면 그 프로그램은 오류를 내재한 채 동작하게 됩니다.

따라서, 항상 예외를 적절히 처리하도록 하고,

정 안된다면 바깥으로 전파되어 디버깅 정보를 남길 수 있도록 합시다.

            
              📕 개인 기록용 블로그입니다.
              😊 오타나 잘못된 정보가 있을 경우 댓글이나 메일로 말씀해주시면 바로 수정하겠습니다! 😊
          

댓글남기기