java – 未检查的异常,将被更好地检查

前端之家收集整理的这篇文章主要介绍了java – 未检查的异常,将被更好地检查前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我意识到,在 Java中,检查异常与未检查异常的相对优点有 been ample discussion,我不打算重新讨论整个辩论.

相反,我想问一个非常具体的问题,因为我正在阅读约书亚布洛奇的有效Java第二版.正如我正在阅读,我注意到在项目59(“避免不必要的使用检查的例外”)约书亚在Java API中给出了一个使用检查的异常的例子.具体来说,在对象中:

protected Object clone()
            throws CloneNotSupportedException

…然后认为它应该是一个未经检查的异常.

If the programmer using the API can do no better,an unchecked exception would be more appropriate. One example of an exception that fails this test is CloneNotSupportedException. It is thrown by Object.clone,which should be invoked only on objects that implement Cloneable (Item 11). In practice,the catch block almost always has the character of an assertion failure. The checked nature of the exception provides no benefit to the programmer,but it requires effort and complicates programs.

然后,我看看他是否有一个相反的例子,但我找不到一个.

所以我想询问一个人是否可以在Java中给出一个使用未经检查异常的示例API,但如果一个被检查的异常是一个更好的选择,并解释为什么.一个现实世界的例子是比较可取的,但是如果这样也能说明事情,我可以接受一个有创意的例子.

编辑:对于那些投票否决这个非建设性的人,我想表明,我不是在寻找意见,辩论,论据或扩大讨论.我也没有进行投票.相反,我正在寻找对实例的参考,从而得出如何获益超过成本的明确分析. (隐含的是承认有成本.)那就是说,我怀疑这个问题的性质是否可能.我认为如果Jon Skeet不能做到这一点,那么这是不可能的.所以也许你是对的关闭如果你必须.

编辑:虽然我没有回应的动作,但是我将以Jon的荣誉为奖.

@H_301_21@解决方法
Yup,easy: Integer.parseInt throws NumberFormatException,它是未选中的.

但是,如果您正在解析潜在的错误数据,那么您一定要考虑捕捉异常 – 您可能很可能忽略该数据,或者可能会报告并继续.它不像Java具有相当于.NET的Int32.TryParse,它允许您轻松忽略不良数据.基本上你需要知道你需要捕获异常,而不会挑衅编译器.格儿.

猜你在找的Java相关文章