DEV ℧ Developer Diary

[EffectiveJava] item77 - 예외를 무시하지 말라

너무 뻔한 조언 같지만 반복해 각인시켜야 할 정도로 사람들이 자주 어기는 방법이 있다.

API 설계자가 메서드 선언에 예외를 명시하는 까닭은, 그 메서드를 사용할 때 적절한 조치를 취해달라고 말하는 것이다.

예외 무시

안타깝게도 예외를 무시하기란 아주 쉽다. 해당 메서드 호출을 try 문으로 감싼 후 catch...

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

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

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

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

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

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

실패 정보가 필요한 이유?

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

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

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

검사 예외 문서화

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

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

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

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

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

예외 번역

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