【问题标题】:Java conditional return terminologyJava 条件返回术语
【发布时间】:2011-11-03 05:48:22
【问题描述】:

Java 似乎在其术语中区分了“错误”、“断言”和“异常”。但是,对于条件检查和失败返回(到目前为止,我将其称为“错误检查”)没有定义的术语(我可以看到)。

public int doSomething(int val) {
    if(val < 0) return -1;
    ...
    return 0;
}

在此示例中(尽管毫无意义),如果val 为负,则该方法返回失败,作为“错误检查”的方法。但是,Java 专门将错误定义为诸如 RuntimeException(硬件故障等)之类的错误。那我指的是什么?

【问题讨论】:

  • 我没看清楚你的问题
  • 异常、错误和断言不仅仅是术语,它们是语言机制,每一个都由 JVM 进行特殊处理,并且非常不同地判断一个条件并将一个特殊值区分为失败。 (Java 没有以任何特殊方式处理,因此没有特定的术语。
  • 这几乎回答了我的问题,谢谢。不过,这是我要采用的方法。这个过程指的是什么?它不能是“错误”检查,因为错误在 java 中是完全不同的东西。

标签: java error-handling terminology


【解决方案1】:

例外条件例外;您不希望发生的事情(但有可能发生)。 Josh Bloch 在他的“Effective Java”一书中特别概述了这一点。

您会发现,当失败是常见且预期的情况时,java 中的许多类方法返回 true/false(布尔值)作为成功/失败的指示符。

话虽这么说,但从来没有那么容易。标准 Java 类中肯定有一些东西会针对常见情况等引发异常。但总的来说,这个答案的第一行是我如何处理自己的代码。

【讨论】:

  • 那么在你的第二段中,它描述了与“异常事件”不同的东西,这被称为一般方法失败吗?我想给它起个名字
  • 我确定它有一个花哨的术语,但老实说,我不知道,抱歉。
  • 我认为我能想到的最接近的是“输入验证”。但是,根据其他人的说法,我仍然对在这些情况下是否可以接受例外感到困惑。我认为这是一个复杂的论点(每个人都有自己的观点)。哪种方法被最广泛接受(可能离题)?
【解决方案2】:

我只得到你一点点。当您的条件失败时,您想要返回一些返回错误...
对于 java 中的两件事 1. 异常 2. 错误
因此,当您的条件为真时,您可以返回异常或错误..
或者throw custom Exception...

【讨论】:

    【解决方案3】:

    我想你可以叫它return code,就像一般进程的exit status一样,我认为返回码也可以应用于方法。

    【讨论】:

      【解决方案4】:

      要回答这个问题,我会参考“重构”一书中描述的模式。 (http://refactoring.com/catalog/consolidateConditionalExpression.html)

      当您的代码反映您的思维过程并以您希望解决问题的方式阅读时,我所学的编程是最好的。

      我会把你的代码改写为

      public void doSomething(int val) {
          if isValueInvalid(val) return ;
          ... // do something
          // returns should be modelled only if the client of this 
      // program is expecting to use the results of this doSomething(..) for taking some action. 
      }
      

      【讨论】:

      • 我有时会采用这种方法,尽管我正在寻找这种检查的术语。它不能称为“错误”检查,因为 Java 将“错误”保留为完全不相关的特定类型的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多