当构造函数无法处理的构造函数中的方法抛出检查异常时,如果确定应用程序无法处理它并且在没有对象正在构建?构造函数可以抛出运行时异常吗?
回答
是的,这是不可避免的在许多构造反正当他们调用其他方法,因为总有一种可能性,他们已经将抛出unchecked异常。
这是一个很好的观点。 – insipid 2010-02-03 19:08:17
是的。除非你知道应该如何处理异常,否则最好扔掉它,而不是简单地吞下它并打印出堆栈跟踪(或者更糟糕的是,什么都不做)。
这将有助于防止稍后出现一些极其难以调试的错误。
是的。这是标准做法。
在Effective Java, 2nd Ed.这是由项目61覆盖,“把适合于抽象例外”。在第58项“对可恢复条件使用已检查的异常以及编程错误的运行时异常”中,有效Java也覆盖了生成的异常是否已选中或未选中。
认为这是一种构造函数,而不是一个正常的方法是不是一个真正的问题。 (事实上,构造函数可以说有更多的自由,因为它们不受超级界面的约束。)
当抛出一个异常作为另一个异常的结果时,确保你设置新的cause
是个好主意例外。
如Chris Jester-Young所评论的那样,抛出检查异常以表示构建对象失败是完全可以的。另一个问题是,抛出未选中例外是个好主意。你会放松编译器的唠叨,它促使你捕捉和处理异常,你一定会这么做。
为什么你想要?更多的时候,你不想处理它,它是一个错误,让它运行到一个记录器/作业处理程序的堆栈。 – reto 2011-09-29 15:47:11
个人而言,我讨厌看到构造函数抛出checked异常(如doppeldish已经指出的那样)。不过,你如何确定应用程序无法处理异常呢?即使应用程序无法处理它,也许用户可以通过再次尝试?
+1需要考虑的事情:P谢谢 – insipid 2010-02-05 20:20:11
- 1. 运行析构函数,当构造函数抛出异常
- 2. 构造函数抛出异常后可以调用finalize吗?
- 3. 构造函数抛出运行时异常
- 4. 可以抛出一个对象的构造函数抛出异常吗?
- 5. 通用类构造函数在运行时抛出类抛出异常错误
- 6. 运行时异常可以被抛出?
- 7. 构造函数和抛出异常
- 8. ServerSocket的构造函数抛出异常
- 9. 从构造函数中抛出异常
- 10. EJB3构造函数抛出异常?
- 11. Angular2,构造函数DI抛出异常
- 12. Handler.publish()的实现可以抛出运行时异常吗?
- 13. YamlDotNet串行构造函数抛出异常
- 14. Java:可以抛出异常抛出异常吗?
- 15. 数组构造抛出NullPointerException异常
- 16. 可以默认构造函数抛出吗?
- 17. WebDriver FluentWait - 函数/谓词可以抛出异常吗?
- 18. 你可以从请求对象 - csrf构造函数异常构造csrf吗?
- 19. 角2参数传递到构造函数抛出异常DI
- 20. Fluent Nhibernate抛出异常FluentNHibernate.Automapping.IAutoClasslike ...缺少无参数构造函数
- 21. 验证构造函数中的数据并抛出异常
- 22. 我可以从_CrtSetReportHook抛出异常吗?
- 23. 文件流析构函数可以在C++中抛出异常吗?
- 24. 了解由构造函数抛出的异常
- 25. 无法捕获由std :: thread构造函数抛出的异常
- 26. 从构造函数中抛出异常在C++中
- 27. 升压正则表达式异常从构造函数抛出* {
- 28. 在MainWindow类型上调用构造函数抛出异常
- 29. 如果分配的内存构造函数抛出异常
- 30. Xamarin OpenGL GLSurfaceView构造函数抛出空引用异常
是的,从构造函数中抛出异常是放弃创建对象的标准方式。 – 2010-02-03 18:59:16
+1 - OOP的新来者的好问题 – JonH 2010-02-03 19:00:08