Java编程,出错时返回

标签 java

我想知道以下用例中方法 myMethod 的最佳编程实践--

1) myMethod 有一些数值目的 - 例如修改数组的内容,该数组是类的私有(private)变量

2)在此之前,我需要对数字进行一些关键检查,例如 check1、check2、check3,如果其中任何一个失败,则没有继续下去的意义。例如。检查可能是检查数组中是否有负数。

所以这就带来了问题,myMethod 应该返回什么,应该如何告诉调用函数 checkX 失败了。

最佳答案

如果这些检查中的任何一个失败,您应该抛出异常

现在的问题是抛出什么样的异常。勾选还是未勾选?已检查异常必须由调用代码捕获,而未检查异常则不会(但这意味着它们可能会一直冒泡到调用堆栈的顶部,一直到您的主方法)。人们对哪个更好进行了激烈的争论。无论哪种方式,请确保记录抛出了哪些异常。

一般来说,您应该对可恢复的情况使用受检异常,对编程错误使用非受检异常(Effective Java 2nd ed Item 58)

Java 中有许多内置的未经检查的异常,您应该优先使用它们,而不是编写自己的异常,包括但不限于。

IllegalArgumentException 非法状态异常 IndexOutOfBoundsException NullPointerException

查看核心 Java 方法,看看它们会抛出什么内容。

异常比返回值更好,因为:

  1. 您必须依靠用户来检查返回值并采取措施。
  2. 您被一个返回 boolean 值或返回代码的方法签名所困扰,这可能不是您想要的。
  3. 异常可以有一条非常具有描述性的错误消息,解释抛出该异常的原因。

关于Java编程,出错时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433985/

相关文章:

java - 完全奇怪的 ClassCastException

java - Appengine 和 java.io 的使用

java - 如何在 Neo4j 中从节点 M 开始获得具有第 N 层方向的完整子图

java - 检测内存不足错误

java - Jboss后台验证

java - akka.dispatch.Dispatcher$$anon$1 究竟是什么?

java - Gradle:无法下载ojdbc7.jar

java - Android Gradle包含本地JAR文件

java - 使用 PDFBox 获取文本颜色

java - 在 "BEGIN-OF-STATEMENT"之后找到 CallableSamentment 。预期的 token 可能包括 : "<space>"