在Java中创建一个例外的一般经验法则是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (46)

我一直在这两种情况下:

  • 创建过多的自定义异常
  • 使用太多的一般Exception类

在这两种情况下,该项目都开始正常,但很快成为维护(和重构)的开销。

那么关于创建自己的Exception类的最佳做法是什么?

提问于
用户回答回答于

Java专家撰写了一篇关于Java中的异常的文章,并在其中列出了一些创建异常的“最佳实践”,总结如下:

  • 不要编写自己的异常(有很多有用的异常已经是Java API的一部分)
  • 编写有用的例外(如果您必须编写自己的例外,请确保它们提供有关发生问题的有用信息)
用户回答回答于

不要做我公司的开发人员做的事情。有人创建了一个类似于java.lang.IllegalArgumentException的[原文如此] InvalidArguementException,现在我们在数百个类中使用它(字面意思)。两者都表明一种方法已通过非法或不恰当的论点。谈论浪费...

Joshua Bloch在Effective Java编程语言指南中介绍了这一点[我的最佳实践的第一手圣经] 第8章例外 第42项:赞成使用标准例外。这是他说的一些话,

重复使用预先存在的例外有几个好处。其中最主要的是,它使得你的API更容易学习和使用,因为它符合程序员已熟悉的既定约定 [ 我的重点,而不是Bloch的 ]。紧接着的一点是,使用API​​的程序更易于阅读,因为它们不会与不熟悉的例外混杂在一起。最后,更少的异常类意味着更小的内存占用和更少的时间加载类。 最常使用的异常是IllegalArgumentException。这通常是在调用者传入值不合适的参数时抛出的异常。例如,如果调用者在代表某个动作要重复的次数的参数中传递负数,则这将是例外情况。

这就是说,你永远不应该抛出异常本身。Java有一个精心挑选的,多样化的,针对性很强的内置异常,可以覆盖大多数情况,并描述发生的异常,以便您可以纠正原因。

对将来需要维护代码的程序员友好。

扫码关注云+社区