Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
HanaHww2 opened this issue Apr 18, 2023 · 1 comment
Open

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

HanaHww2 opened this issue Apr 18, 2023 · 1 comment
Assignees

Comments

@HanaHww2
Copy link
Contributor

No description provided.

@YunDaHyee
Copy link
Contributor

아이템 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.SECCDS) ;
} catch (TimeoutException I ExecutionException ignored) {
    // 기본값을 사용한다(색상 수를 최소화하면 좋지만, 필수는 아니다).
}
  • 예제 : FileInputStream을 닫는 경우
    • 입력 전용 스트림이므로 파일 상태를 변경하지 않아서 복구할 게 없다.
    • 스트림을 닫는다는 것은 필요한 정보는 이미 다 읽었다는 뜻이므로 남은 작업을 중단할 이유가 없다.
    • 파일 닫지 못했다는 사실을 로그로 남기는 정도의 예외처리는 좋은 방법.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants