250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- 이팩티브 자바
- AWS
- 자바
- 네트워크
- 도메인 주도 개발 시작하기
- AWS RDS
- 자바스터디
- 자바예외
- MariaDB
- 알고리즘분석
- aop
- 인덱스
- SQL쿡북
- java
- 혼공SQL
- vue.js
- 기술면접
- jpa
- DDD
- mysql
- 스프링부트와AWS로혼자구현하는웹서비스
- 인프런백기선
- 인프런김영한
- 클린코드
- 자료구조
- react
- 이펙티브 자바
- 이펙티브자바
- CleanCode
Archives
- Today
- Total
기록이 힘이다.
[이펙티브 자바] 아이템77 예외를 무시하지 말라 본문
728x90
//catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다!
try{
...
}catch(SomeException e){
}
예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 비유하자면 화재경보를 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 무시하는 수준을 넘어 아예 꺼버려, 다른 누구도 화재가 발생했음을 알지 못하게 하는 것과 같다.
물론 예외를 무시해야 할 때도 있다. EX) FileInputStream --> 로그
예외를 무시하기로 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자.
Future<Integer> f = exec.submit(planarMap::chromaticNumber);
int numColors = 4; // 기본값. 어떤 지도라도 이 값이면 충분하다.
try{
} catch(TimeoutException | ExecutionException ignored){
//기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다.)
}
검사와 비검사 예외에 똑같이 적용된다. 예외를 적절히 처리하면 오류를 완전히 피할 수도 있다. 무시하지 않고 바깥으로 전파되게만 놔둬도 최소한 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게는 할 수 있다.
'JAVA' 카테고리의 다른 글
CSRF 토큰 오류 (0) | 2023.05.26 |
---|---|
[기술면접] dto와 pojo (0) | 2023.05.26 |
[이펙티브 자바] 아이템76 가능한 한 실패 원자적으로 만들라 (0) | 2023.04.30 |
[이펙티브 자바] 아이템 75.예외의 상세 메시지에 실패 관련 정보를 담으라. (0) | 2023.04.29 |
[이펙티브 자바] 74. 메서드가 던지는 모든 예외를 문서화하라 (0) | 2023.04.26 |