10장 : 예외

2023. 4. 21. 12:41스터디/이펙티브 자바 스터디

728x90

아이템 69. 예외는 진짜 예외 상황에만 사용하라 

 

- 예외는 오직 예외 상황에서만 써야 한다. 절대로 일상적인 제어 흐름용으로 쓰여선 안 된다

- 잘 설계된 API라면 클라이언트가 정상적인 제어 흐름에서 예외를 사용할 일이 없게 해야

 

# 상태 검사 메서드, 옵셔널, 특정 값 중 하나를 선택하는 지침

1. 외부 동기화 없이 여러 스레드가 동시에 접근 가능하거나 외부 요인으로 상태가 변할 수 있다면 옵셔널이나 특정 값 사용

2. 성능이 중요한 상황에서 상태 검사 메서드가 상태 의존적 메서드의 작업 일부를 중복 수행한다면 옵셔널이나 특정 값 선택

3. 다른 모든 경우엔 상태 검사 메서드 방식이 더 나음


아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 

- 호출하는 쪽에서 복구하리라 여겨진다면 검사 예외 사용

- 상황에 따라 회복해내라고 요구하면 검사 예외 사용

- 프로그래밍 오류를 나타낼 때는 런타임 예외 사용

- Error 상속 금지

 


아이템 71. 필요 없는 검사 예외 사용은 피하라 

- 검사 예외는 스트림 안에서 직접 사용 불가

- 검사 예외를 회피하는 가장 쉬운 방법은 옵셔널을 반환하는 것


아이템 72. 표준 예외를 사용하라 
아이템 73. 추상화 수준에 맞는 예외를 던지라 
아이템 74. 메서드가 던지는 모든 예외를 문서화하라 
아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라 
아이템 76. 가능한 한 실패 원자적으로 만들라 

- 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태 유지

- 가장 간단한 방법은 불변 객체로 설계하는 법 


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

728x90

'스터디 > 이펙티브 자바 스터디' 카테고리의 다른 글

12장 : 직렬화  (0) 2023.04.22
11장 : 동시성  (0) 2023.04.22
9장 : 일반적인 프로그래밍 원칙  (0) 2023.04.15
8장 : 메서드  (0) 2023.04.06
7장 : 람다와 스트림  (0) 2023.04.06