我想知道以下用例中方法 myMethod 的最佳编程实践--
1) myMethod 有一些数值目的 - 例如修改数组的内容,该数组是类的私有(private)变量
2)在此之前,我需要对数字进行一些关键检查,例如 check1、check2、check3,如果其中任何一个失败,则没有继续下去的意义。例如。检查可能是检查数组中是否有负数。
所以这就带来了问题,myMethod 应该返回什么,应该如何告诉调用函数 checkX 失败了。
最佳答案
如果这些检查中的任何一个失败,您应该抛出异常
。
现在的问题是抛出什么样的异常。勾选还是未勾选?已检查异常必须由调用代码捕获,而未检查异常则不会(但这意味着它们可能会一直冒泡到调用堆栈的顶部,一直到您的主方法)。人们对哪个更好进行了激烈的争论。无论哪种方式,请确保记录抛出了哪些异常。
一般来说,您应该对可恢复的情况使用受检异常,对编程错误使用非受检异常(Effective Java 2nd ed Item 58)
Java 中有许多内置的未经检查的异常,您应该优先使用它们,而不是编写自己的异常,包括但不限于。
IllegalArgumentException
非法状态异常
IndexOutOfBoundsException
NullPointerException
查看核心 Java 方法,看看它们会抛出什么内容。
异常比返回值更好,因为:
- 您必须依靠用户来检查返回值并采取措施。
- 您被一个返回 boolean 值或返回代码的方法签名所困扰,这可能不是您想要的。
- 异常可以有一条非常具有描述性的错误消息,解释抛出该异常的原因。
关于Java编程,出错时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433985/