예기치 않은 내부 라이브러리 오류가있는 경우 런타임 예외가 전파됩니다. 라이브러리 코드에 버그가 있으면 클라이언트가 중단 될 것으로 예상됩니다. 라이브러리의 버그를 수정하십시오. 모든 것을 잡아 내지 않고 라이브러리 관련 예외를 반환하지 마십시오. 아무런 효과가 없습니다.
가끔씩 잘못 될 것으로 예상되는 경우 API에이를 빌드하십시오. 이는 정상적인 프로그램 흐름에 예외를 사용하지 않아야한다는 원칙에 기반합니다. 예를 들어
:
ProcessResult performLibraryTask(TaskSpecification ts)
당신이 ProcessResult을 가질 수 있습니다이 방법은 오류 상태 표시 :
ProcessResult result = performLibraryTask(new FindSmurfsTaskSpecification(SmurfColor.BLUE));
if (result.failed()) {
throw new RuntimeException(result.error());
}
이러한 접근 방식은 NULL을 반환 방식과 유사합니다,하지만 당신은 다시 더 많은 정보를 보낼 수 있습니다 고객.
편집 : 합의 된 프로토콜을 준수하지 않는, 당신은 당신이 문서화 할 수 런타임 오류를 던질 수있는 상호 작용을위한
. 예를 들면 다음과 같습니다.
if (currentPeriod().equals(SmurfColor.BLUE) && SmurfColor.GREEN.equals(taskSpecification.getSmurfColor()) {
throw new IllegalStateException("Cannot search for green smurfs during blue period, invalid request");
}
계약 위반으로 인한 상호 작용이 원인이며 이로 인해 발생하지 않을 수 있습니다.
Null 개체 패턴을 알고 있습니까? http://en.wikipedia.org/wiki/Null_Object_pattern –