[Effective Java] 10장 예외
[Java/Spring] 예외 : Global Exception Handler 작성법
[코딩 노트] Exception 처리, 어떻게 하는게 좋을까?
아이템 69. 예외는 진짜 예외 상황에만 사용하라
아이템 70. 복구할 수 있는 상황에는 CheckedException을, 프로그래밍 오류에는 RuntimeException을 사용하라
아이템 71. 필요 없는 CheckedException 사용은 피하라
- Checked Exception은 다음과 같은 상황에서 사용
- 호출하는 쪽에서 복구할 것이라고 여겨지는 상황
- 예를 들면 File IO. 예외가 발생하면 닫았다가 다시 열 수도 있고 등등 복구가 가능함.
- Unchecked Exception은 다음과 같은 상황에서 사용
- 제대로 쓴다면 일어날 가능성이 없는 경우
- 예외가 발생해도 어차피 할 수 있는게 없는 경우 (호출한 쪽에서 복구 불가능)
- 예를 들어 코딩을 애초에 잘못해서 난거면 복구가 불가능함
- 또는, 유저한테 요청을 받았는데 있어야 할 값이 없어서 진행이 불가능한 경우, 내가 어떻게 더 이상 할 수가 없음. 다시 보내달라고 할 수도 없는 노릇이고. 이런 경우가 복구 불가능.
- 복구 가능/불가능이 딱 따져지지 않을 때는 그냥 RuntimeException 쪽을 사용하는 편이 낫다
아이템 72. 표준 예외를 사용하라
아이템 73. 추상화 수준에 맞는 예외를 던져라
```java
try {
... // 저수준 추상화를 이용한다.
} catch (LowerLevelException cause) {
// 추상화 수준에 맞게 번역한다.
throw new HigherLevelException(cause);
}
```
아이템 74. 메서드가 던지는 모든 예외를 문서화하라
아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라
아이템 76. 가능한 한 실패 원자적으로 만들라
- 실패 원자적이란, "호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 하는 것"
아이템 77. 예외를 개무시하지 말라
- 어쨌든 무시하기로 했으면 이유를 주석으로 남기고 변수 이름을 `` ignored``로 바꿔두도록 하자
```java
} catch (ExecutionException ignored) {
// 기본값을 사용한다
}
```
'Java Stack > Java' 카테고리의 다른 글
[Effective Java] 12장 직렬화 (0) | 2020.02.28 |
---|---|
[Effective Java] 11장 동시성 + collection 유틸 메서드 (0) | 2020.02.28 |
[Effective Java] 9장 일반적인 프로그래밍 원칙 [TIP : String 비교, 문자열 포매팅] (0) | 2020.02.26 |
[Java] ThreadLocal (0) | 2020.02.26 |
[Effective Java] 8장 메서드 ( null 체크, Optional ) (2) | 2020.02.22 |