티스토리 뷰
(Effective Java) 규칙77. 예외를 무시하지 말라
예외 무시의 위험성
-
너무 뻔한 조언 같지만 사람들이 자주 어기고 있다.
-
API 설계자가 메서드 선언에 예외를 명시하는 까닭은, 그 메서드를 사용할 때 적절한 조취를 취해달라고 말하는 것이다.
- API 설계자의 목소리를 흘려버리지 말자.
-
안타깝게도 예외를 무시하기란 아주 쉽다.
-
해당 메서드 호출을
try
문으로 감싼 후catch
블록에서 아무 일도 하지 않으면 끝임// catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다! try { ... } catch (SomeException e) { }
-
-
예외는 문제 상황에 잘 대처하기 위해서 존재하는데
catch
블록을 비워두면 예외가 존재할 이유가 없어진다.- 운이 좋아 별 탈이 없으면 다행이지만 끔찍한 참사로 이어질 수 있음
-
빈
catch
블록을 목격한다면 여러분 머릿속에 사이렌을 울려야 한다.
예외를 무시해야 할 때
-
물론 예외를 무시해야 할 때도 있다.
- 예)
FileInputStream
을 닫을 때- (입력 전용 스트림이므로) 파일의 상태를 변경하지 않았으니 복구할 것이 없음
- (스트림을 닫는다는 건) 필요한 정보는 이미 다 읽었다는 뜻이니 남은 작업을 중단할 이유도 없음
- 예)
-
예외를 무시하기로 했다면
catch
블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수 이름도ignore
로 바꿔놓도록 하자 .Future<Integer> f = exec.submit(planarMap::chromaticNumber); int numColors = 4; try { numColors = f.get(1L, TimeUnit.SECONDS); } catch (TimeoutException | ExecutionException ignored) { //기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다). }
정리
-
이번 내용은 검사와 비검사 예외에 똑같이 적용된다.
- 예측할 수 있는 예외 상황이든 프로그래밍 오류든, 빈
catch
블록으로 못 본 척 지나치면 그 프로그램은 오류를 내재한 채 동작하게 됨 - 그러다 어느 순간 문제의 원인과 아무 상관없는 곳에서 갑자기 죽어버릴 수 있음
- 예측할 수 있는 예외 상황이든 프로그래밍 오류든, 빈
-
예외를 적절히 처리하면 오류를 완전히 피할 수도 있음
- 무시하지 않고 바깥으로 전파되게만 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신혹시 중단되게는 할 수 있음
결론
-
예외를 무시하지 말자.
끝으로
이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > EffectiveJava' 카테고리의 다른 글
(이펙티브 자바) 규칙26-1. 제네릭 관련 용어 정리 (0) | 2020.03.10 |
---|---|
(이펙티브 자바) 규칙 62. 다른 타입이 적절하다면 문자열 사용을 피하라 (0) | 2020.03.10 |
(이펙티브 자바) 규칙43. 람다보다는 메서드 참조를 사용하라 (0) | 2020.03.06 |
(이펙티브 자바) 규칙45. 스트림은 주의해서 사용하라 (0) | 2020.03.05 |
(이펙티브 자바) 규칙15. 클래스와 멤버의 접근 권한을 최소화하라 (0) | 2020.03.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- JavaFX 테이블뷰
- 일본 배낭여행
- 자전거 여행
- JavaFX 종료
- Java UI
- 일본여행
- 텐트
- 배낭여행
- 이펙티브자바
- 방통대 과제물
- JavaFX
- JavaFX Window Close
- TableView
- springboot
- 인텔리제이
- JavaFX Table View
- 일본 자전거 여행
- java
- 자바
- git
- 이펙티브 자바
- 이펙티브
- 일본 여행
- intelij
- 자전거
- 배낭 여행
- effective java
- effectivejava
- windows
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함