2014-12-28 3 views
0

에 정의 된 체크 예외를 던졌습니다. public List<Entity> getEntities() 메서드가있는 DataStore 인터페이스가 있다고 가정 해보십시오. SqlDataStore 클래스는이 인터페이스를 구현합니다. 문제는 SqlDataStore.getEntities()을 호출 할 때 SQLException이 던져 질 수 있다는 것입니다. 데이터를 가져 오기 위해 XML 파일에 액세스하는 구현 XmlDataStore을 작성할 수 있기 때문에 메소드 서명에이 확인 예외를 추가하기 위해 인터페이스를 변경할 수 없습니다. 구현에서 throw 할 수있는 확인 된 예외를 처리하려면 어떻게해야합니까?오버라이드 메소드가 인터페이스

+7

체크되지 않은 예외로 감 쌉니다. –

+2

네, 또는 더 나은 여전히, 당신의 인터페이스가 던져 놓을 수있는 모든 유형의 예외로 포장하십시오. –

+0

나는 그 질문을 이해하지 못한다. 인터페이스를 변경하여 확인 된 예외를 메서드 시그니처에 추가 할 수 있습니다. 'XmlDataStore'의 메소드는 예외를 throw한다고 선언 할 필요가 없습니다. –

답변

0

좋아요, 여기 제가 더 나은 아이디어가 부족한 부분이 있습니다. 나는 RuntimeException을 확장 한 클래스 DataStoreException을 정의했다. 인터페이스 정의에서 throws 절을 제거했습니다. DataStore을 구현 한 클래스 중 하나에서 확인 된 예외가 throw 될 때이를 catch하고 DataStoreException에 랩핑하고 다시 throw합니다.

관련 문제