始终使用选中的例外

时间:2015-02-12 19:45:40

标签: java exception checked-exceptions unchecked-exception

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

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

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

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

2 个答案:

答案 0 :(得分:5)

我的建议,虽然不同的人对此有不同的意见,但是:

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

答案 1 :(得分:2)

检查异常看起来很棒,但实际上他们根本无法解决他们设计修复的问题(更多细节请https://arpytoth.com/2016/04/08/the-problem-with-checked-exceptions/)。

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