으로 실패 할 수있는 Java - Iterator를 사용하여 일부 데이터에서 반복자를 디자인하려고합니다. 이는 어딘가에서 실패 할 수 있습니다. 예를 들어, 을 호출하면 DB에서 다음 행을 읽고 진행할 Iterator<DatabaseObject>
이됩니다. 다른 예는 Exception을 발생시키는 API의 객체를 사용하여 데이터를 처리하는 것을 포함 할 수 있습니다. 문제는 Iterator가 예외를 발생시키는 것이 허용되지 않기 때문에이 시나리오에서 어떻게 응답 할 것인가 ... NoSUchElementException
을 던지고 거기에 의미있는 메시지를 제공해야 하는가?제목에 설명 된대로
3
A
답변
5
체크되지 않은 예외를 throw 할 수 있습니다. 사실 NoSuchElementException
을 던지는 것이 합리적입니다. 오류가 그러한 요소가되는 것을 막았 기 때문입니다.
예외가 기본 예외를 래핑하는 것이 좋을 것입니다. 불행히도 NoSuchElementException
에는 또 다른 예외가 필요한 생성자가 없습니다. 당신은 근본 원인을 전파하려는 경우, 당신은 그런 RuntimeException
을 던지는 같은 다른 경로를 이동해야합니다 :
try {
...
} catch (<some exception type> e) {
throw new RuntimeException("Next element not accessible", e);
}
또는 (예 : null
같은) 일부 예약 된 값을 반환 할 수 있습니다.
0
나는 그것이 당신이 오류를 어떻게 처리 하느냐에 달려 있다고 주장 할 것이다. 문제가 발생하면 false를 반환 할 수 있도록 hasNext()에 이미있는 다음 항목을 읽는 것이 좋습니다. 클라이언트 관점에서 생각해보십시오. 클라이언트는 어떻게 대응해야합니까?
0
"실패 할 수있는 반복기"를 만들려고 시도한 API 중 대부분은 결국 매우 심하게 작동하게됩니다. 나는 단지 에 Iterator
을 사용하지 말 것을 강력히 권합니다.
관련 문제
- 1. 배경 작업자가 제목에 설명 된대로 "완료 됨"이벤트 처리기
- 2. 제목에 언급 된대로 VS 2008 Server 탐색기
- 3. JSF 서블릿 아치 도움말은 아래에 설명 된대로
- 4. Hadoop에 설명 된대로 RDBMS가 좋지 않습니까?
- 5. 제목에 대한
- 6. 구조체 맵 : 메서드에 System.Web.HttpRequestBase를 제공하는 방법? 여기에 설명 된대로
- 7. 여기에 설명 된대로 내가 에클 레어 소스를 얻으려고
- 8. git cherry confusion - 문서에 설명 된대로 작동하지 않습니다.
- 9. Python : namedtuple._replace()가 설명서에 설명 된대로 작동하지 않습니다.
- 10. 바로 가기에 AppUserModelID를 어떻게 설정합니까? 이 질문에 설명 된대로
- 11. 함수에 인수를 전달하는 방법은 무엇입니까? 여기에 설명 된대로
- 12. 이 자습서에 설명 된대로 내가 파일에 직렬화를 사용
- 13. 안 Appstats 여기에 설명 된대로 내가 Appstats을 사용하고
- 14. 정의되지 않은 메서드`빌드 ': 여기에 설명 된대로 클래스
- 15. , 어떻게, 내가 질문 제목에 제대로 설명 모르겠어요 페이지
- 16. 분류합니다는 제목에
- 17. NavBar 제목에 그림자 추가
- 18. 제목에 대문자가 있습니까?
- 19. 제목에 WordPress shortcode 사용
- 20. Fieldset의 제목에 배경색을 부여하십시오.
- 21. 특정 제목에 sifr 금지
- 22. 태그 제목에 XSLTT IF
- 23. Wikipedia에서 약력 제목에 액세스
- 24. StringSplitOptions.RemoveEmptyEntries가 광고 된대로 작동하지 않습니다.
- 25. httpcomponents가 문서화 된대로 작동하지 않습니다.
- 26. JUDDI : (/ juddiv3/서비스) 여기에 설명 된대로 juddi 서버를 설치 한 후
- 27. , (404)는 당신이 찾고있는 리소스가 여기에 설명 된대로 내가 ELMAH를 설정 한
- 28. Xml 직렬화 시퀀스 문제 -하지만 그 이유는 무엇입니까? 이미 여기에 설명 된대로
- 29. PHP는 내가 여기에 설명 된대로 워드 프레스 배후에 로그인 PHP 컬을 사용하고
- 30. Android 연락처 콘텐츠 URI HAS_PHONE_NUMBER이 (가) 설명서에 설명 된대로 작동하지 않습니다.