조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다. 1. 추상화 수준에 맞는 예외를 던지라예외 번역상위계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 변경스스로 처리하기 어려운 경우 사용 예외 연쇄근본 원인인 저수준 예외를 고수준 예외에 실어 보내는 방식디버깅에 도움이 될 경우 사용 2. 메서드가 던지는 모든 예외를 문서화하라예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하기비검사 예외는 선언의 throws에 포함시키지 말기 3. 예외의 상세 메시지에 실패 관련 정보를 담으라실패 순간을 포착하려면 발생한 예외에 관여된 모든 매개변수와 필드의 값을 실패 메시지에 담아야 함 4. 가능한 한 실패 원자적으로 만들라호출된 메서드가 실패하더..