繁体   English   中英

始终使用选中的例外

[英]Always Use Checked Exceptions

我最近一直在重新考虑一些Java代码......我发现有很多RuntimeExceptions被抛出(即未经检查的异常)。 我创建了自己的已检查异常,并用我自己的异常替换了这些RuntimeExceptions的每个实例。 然后,这迫使我检查异常。

有了这个,我发现检查异常更好,因为另一个开发人员将确保处理异常...而不是程序只是吃异常而不向用户显示任何内容。

我已经阅读了许多有关未检查的异常与已检查的异常的文章。但是,我仍然觉得我更检查了异常,因为它减少了人为错误。

编程有多糟糕,主要是使用检查异常? 有没有其他人觉得他们喜欢检查异常比未经检查的异常更多?

我的建议,虽然不同的人会对此有不同的看法,但是:

  • 对于应由您认为属于应用程序逻辑的部分处理的异常条件,使用已检查的异常,例如:用户输入非现有用户名进行登录,用户尝试保存,项目超出其订阅允许的限制等。这样,发现异常情况的代码的客户端被迫至少承认可能发生这种情况的事实,并希望以最恰当的方式处理它
  • 使用未经检查的异常会在您无法控制的情况下及早失败并且无法通过应用程序逻辑进行恢复,例如:您的函数接收错误的参数作为参数:听起来像抛出“非法参数异常”的完美场景,是大多数编程语言中的运行时异常

预先检查的异常看起来很不错,但实际上它们根本无法解决其设计要解决的问题(更多详细信息, 参见https://arpytoth.com/2016/04/08/the-problem-with-checked-exceptions/ ) 。

Java 不会强迫您处理异常 ,而只是强迫您准确地确认哪些异常可能会通过。 大多数开发人员使用一个空块来捕获它们,或者使用throws子句让异常通过。 这会使代码更加冗长,复杂,有时难以测试,从而总体上降低了代码质量,而没有任何明显的好处。 还要注意,Java的新功能在检查异常(例如lambda表达式)上也不能很好地发挥作用。 我的建议是避免检查异常,而应使用运行时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM