Skip to content

Latest commit

 

History

History
44 lines (34 loc) · 1.82 KB

item77.md

File metadata and controls

44 lines (34 loc) · 1.82 KB

아이템 77. 예외를 무시하지말라


예외의 필요성

- API 설계자가 메서드 선언에 예외를 명시하는 이유 : 그 메서드를 사용할 때 적절한 조치를 취하라는 것.
- 검사와 비검사 예외 상관 없이 예측할 수 있는 예외 상황이든 프로그래밍 오류든  
빈 catch을 가지는 프로그램은 오류를 내재한 채 동작하게 된다.
- 예외를 적절히 처리하거나 바깥으로 전파되게만 해도  
예외를 완전히 피하거나 최소한의 디버깅 정보를 남긴 채 프로그램이 신속히 중단되게 하거나 할 수 있다.

예외가 무시되는 코드

예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다.
```java
try{

}catch(SomException e){
    
}
```

예외를 무시해도 되는 경우

catch 블록 안에 예외 처리를 무시하는 이유를 주석으로 남기고
예외 변수의 이름도 'ignored'로 바꿔놓을 것

Future<Integer> f = exec.5ubmit(planarMap::chromaticNumber);
int numColors = 4; // 기본값. 어떤 지도라도 이 값이면 충분하다.
try {
    numColors = f.get(lL, TimeUnit.SECC씨DS) ;
} catch (TimeoutException I ExecutionException ignored) {
    // 기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다).
}
  • 예제 : FileInputStream을 닫는 경우
    • 입력 전용 스트림이므로 파일 상태를 변경하지 않아서 복구할 게 없다.
    • 스트림을 닫는다는 것은 필요한 정보는 이미 다 읽었다는 뜻이므로 남은 작업을 중단할 이유가 없다.
    • 파일 닫지 못했다는 사실을 로그로 남기는 정도의 예외처리는 좋은 방법.