조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다.
1. 추상화 수준에 맞는 예외를 던지라
예외 번역
- 상위계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 변경
- 스스로 처리하기 어려운 경우 사용
예외 연쇄
- 근본 원인인 저수준 예외를 고수준 예외에 실어 보내는 방식
- 디버깅에 도움이 될 경우 사용
2. 메서드가 던지는 모든 예외를 문서화하라
- 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하기
- 비검사 예외는 선언의 throws에 포함시키지 말기
3. 예외의 상세 메시지에 실패 관련 정보를 담으라
- 실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수와 필드의 값을 실패 메시지에 담아야 함
4. 가능한 한 실패 원자적으로 만들라
- 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 함
실패 원자성 확보하기
- 매개변수 유효성 검사하기
- 불변 객체로 설계하기
- 임시복사본에서 작업 수행 후, 성공하면 원래 객체와 교체하기
- 작업 도중 실패를 가로채는 복구 코드를 작성하여 작업 전 상태로 되돌리기
5. 예외를 무시하지 말라
- 무시할 경우, catch 블록 안에 그렇게 결정한 이유를 주석으로 남기기
'Java' 카테고리의 다른 글
[Effective Java] 11-2. 동기화 (1) | 2025.01.03 |
---|---|
[Effective Java] 11-1. 동기화 (0) | 2025.01.01 |
[Effective Java] 10-1. 예외 (0) | 2025.01.01 |
[Effective Java] 9-1. 일반적인 프로그래밍 원칙 (0) | 2025.01.01 |
[Effective Java] 8-2. 메서드 (0) | 2024.12.31 |