생성자가 처리 할 수없는 생성자의 메서드에서 예외가 발생하면 응용 프로그램에서 처리 할 수없고 해당 없음을 알 수없는 경우 해당 예외를 catch하고 런타임 예외로 다시 throw 할 수 있습니다. 건설중인 물건?생성자가 런타임 예외를 발생시키는 것은 괜찮습니까?
답변
예,이 이미 체크되지 않은 예외를 throw 할 가능성이 항상 있기 때문에 그들이 다른 방법을 호출 할 때 어쨌든 많은 생성자 불가피하다.
이것은 좋은 지적입니다. – insipid
예. 예외 처리 방법을 알지 못한다면 예외를 삼키고 스택 추적을 인쇄하는 것보다 (또는 더 나쁜 것은 절대 수행하지 말고) 던지는 것이 좋습니다.
이 나중에 몇 가지 매우 어려운 디버그 오류를 방지하는 데 도움이됩니다.
예. 이것은 표준 관행입니다. 이 Effective Java, 2nd Ed.에서
는 "추상화 적절한 예외를 발생"부품 (61)에 의해 덮여있다. 결과 예외가 점검되는지 또는 선택 취소되는지는 항목 58, "프로 그래 V 오류에 대한 복구 가능한 조건 W 런타임 예외에 대해 확 인 된 예외 사용"의 Effective Java에서도 포함됩니다. 이 오히려 정상적인 방법보다 생성자이라고
는정말 문제가되지 않습니다. (실제로 생성자는 슈퍼 인터페이스에 묶여 있지 않기 때문에 더 많은 자유를 누릴 수 있습니다.)
또 다른 예외의 결과로 예외를 던지면 cause
을 새로운 것으로 설정하는 것이 좋습니다. 예외.
을으로 설정하면 개체 구성이 실패했음을 나타낼 수 있습니다. Chris Jester-Young이 이미 주석을 달았습니다. 을 사용하지 않으려면 예외를 해제하는 것이 좋습니다. 예외를 잡아서 처리하도록 권하는 컴파일러의 잔소리를 느낄 것입니다. 확실히 할 수 있습니다.
왜 당신이 원합니까? 더 자주 당신이 그것을 처리하고 싶지 않아, 그것의 오류, 그것은 로거/작업 처리기에 스택을 실행하자. – reto
는 개인적으로 나는 (doppeldish 이미 지적) 생성자가 체크 된 예외를 던져보고 싶지. 그럼에도 불구하고 응용 프로그램이 예외를 처리 할 수 없다는 것을 어떻게 확신 할 수 있습니까? 응용 프로그램이 그것을 처리 할 수없는 경우에도 사용자가 단순히 다시 시도하여 할 수 있습니까?
+1 할 항목 : P 고마워요. – insipid
- 1. 비공개 예외를 발생시키는 것이 합리적입니까?
- 2. EJB3 생성자가 예외를 던지고 있습니까?
- 3. 파이썬이 예외를 발생시키는 함수의 범위를 검사하려면 어떻게해야합니까?
- 4. 가상 메소드에 NotImplemented 예외를 던져도 괜찮습니까?
- 5. WinXP에서 호출 예외를 발생시키는 ComponentResourceManager.GetObject ("$ this.Icon")
- 6. 핫스팟이 pulseaudio 예외를 발생시키는 이유는 무엇입니까?
- 7. 모듈의 버전 번호에 예외를 발생시키는 방법
- 8. 런타임 중에 속성 생성자가 언제 실행됩니까?
- 9. 생성자가 Java에서 예외를 throw 할 수 있습니까?
- 10. WindowsIdentity 생성자가 LogonUser의 토큰으로 예외를 throw합니다.
- 11. 괜찮습니까?
- 12. 익명 메서드가 로컬 변수에 액세스 할 때 런타임 예외를 throw합니다.
- 13. Sharepoint에서 401 (무단 액세스) 예외를 발생시키는 방법은 무엇입니까?
- 14. 파이썬 CGI 스크립트에서 http 오류/예외를 발생시키는 방법은 무엇입니까?
- 15. 파이썬에서 어떤 함수 호출이 예외를 발생시키는 지 확인하는 방법은 무엇입니까?
- 16. 대부분의 JUnit 테스트에서 예외를 발생시키는 것이 좋습니다. 내 JUnit 테스트의
- 17. 데이터베이스가 Nhibernate를 사용하여 특정 예외를 발생시키는 지 확인하십시오.
- 18. 다른 레일스 예외처럼 동작하도록 레일스에서 예외를 발생시키는 방법은 무엇입니까?
- 19. Google 웹 로그 분석에서 직접 트래픽을 실제로 발생시키는 것은 무엇입니까?
- 20. DataContext가 DataTemplate.LoadContent 클래스의 바인딩 업데이트를 항상 발생시키는 것은 아닙니다.
- 21. javax.mail.Session 생성자가 표시되지 않습니다.
- 22. NB 플랫폼 모듈에서 런타임 예외를 잡는 방법은 무엇입니까?
- 23. 어떻게 VB6에서 생성자가 부족한가요?
- 24. TPL로 AggregateException을 발생시키는 방법은 무엇입니까?
- 25. Nasa Worldwind : 이러한 이상한 런타임 예외를 어떻게 수정합니까?
- 26. ASP.NET MVC 응용 프로그램의 C#에서 런타임 예외를 표시하지 않음
- 27. 오디오 파일을 재생할 때 런타임 예외를 처리하는 방법은 무엇입니까?
- 28. Dispose()의 이벤트를 실행해도 괜찮습니까?
- 29. 런타임, serilize 및 드 serilize에서 클래스를 작성하는 것은 다음 froblem에게
- 30. .NET에서 처리되지 않은 예외를 트래핑하는 것은 addins (XLL)를 능가합니까?
예, 생성자로부터 예외를 던지는 것은 객체 생성을 중단하는 표준 방법입니다. –
+1 - 새로운 사람들을위한 좋은 질문입니다 OOP – JonH