DEV ℧ Developer Diary

[EffectiveJava] item76 - 가능한 한 실패 원자적으로 만들라

작업 도중 예외가 발생해도 그 객체는 여전히 정상적으로 사용할 수 있는 상태라면 멋질것이다. 검사 예외를 던진 경우라면 호출자가 오류 상태를 복구할 수 있을 테니 특히 더 유용할 것이다.

일반화해 이야기하면, 호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다. 이러한 특성을 실패 원자적(failure-atomic)이라고...

[EffectiveJava] item75 - 예외의 상세 메시지에 실패 관련 정보를 담으라

예외를 잡지 못해 프로그램이 실패하면 자바 시스템은 그 예외의 스택 추적(stack trace) 정보를 자동으로 출력한다.

스택 추척은 예외 객체의 toString 메서드를 호출해 얻는 문자열로, 보통은 예외의 클래스 이름 뒤에 상세 메시지가 붙는 형태다.

실패 정보가 필요한 이유?

이 정보가 실패 원인을 분석해야 하는 프로그래머...

[EffectiveJava] item74 - 메서드가 던지는 모든 예외를 문서화하라

메서드가 던지는 예외는 그 메서드를 올바로 사용하는 데 아주 중요한 정보다. 따라서 각 메서드가 던지는 예외를 문서화 하는것은 중요하다.

검사 예외 문서화

검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하자.

공통 상위 클래스 하나로 뭉뚱그려 선언하는 일은...

[EffectiveJava] item73 - 추상화 수준에 맞는 예외를 던져라

수행하려는 일과 관련 없어 보이는 예왹 튀어나오면 당활스러울 것이다. 메서드가 저수준 예외를 처리하지 않고 바깥으로 전파해버릴 때 종종 일어나는 일이다.

이는 단순한 프로그래머를 당황시키는 데 그치지 않고, 내부 구현 방식을 드러내어 윗 레벨의 API를 오염시킨다.

예외 번역

이 문제를 피하려면 상위 계층에서는 저수준 예외를...

[EffectiveJava] item72 - 표준 예외를 사용하라

예외도 일반 코드와 마찬가지로 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다.

표준 예외의 재사용

표준 예외를 재사용 하면 아래와 같은 이점이 있다.

  1. 규약을 그대로 따르기 때문에 API가 다른사람이 익히고 사용하기가 쉬워진다.
  2. 개발한 API를 사용한 프로그램도 낯선 예외를 사용하지...