例外情况:如果没有返回,该怎么办。JAVA 1 周,3 日 Questions & Answers 2069 在我的容器类中有long get(int key)方法 如果key值没有匹配项,该怎么办 抛出异常?还有别的吗
# 1 楼答案 您甚至不必在容器类中处理它。在控制器类或调用该方法的类中处理它。如果你真的想,如果什么都没有回来,就返回-1编辑:如果-1是有效值,则选择一个无效值作为返回值。我的偏好是避免NULL 例如 if ( get(tempKey) == -1 ) //you know it isn't a match, do something with it, throw exception...etc.
# 2 楼答案 取决于应用程序-这就是我要说的。我会尽量确保你的两个问题在张贴上述 我会回来很久。第一次查询的最小值为,第二次查询的最小值为null 返回null并不是那么糟糕——请阅读下面关于我选择的解释 当您开发调用其他类和方法的类和方法时,作为经验法则;您应该根据调用方法后逻辑处理合同的方式来定义预期的合同(参数和返回值) 在您的情况下,如果该方法必须返回一个long,并且您没有任何要返回的内容,则返回long。最小值。通过这种方式,您可以将应用程序与负数作为有效返回值的情况隔离开来——很少有处理时间长的程序。最小值 进入第二个问题-当地图中不存在密钥时,应该返回什么。Java SDK展示了一种方法:返回null是最好的选择。这将迫使您在处理代码之前检查get()方法的有效返回值。假设您没有捕获NullPointerException,这也会导致您的应用程序在错过此类检查时崩溃—这是一个很好的快速失败实现,可以帮助您识别丢失的链接
# 3 楼答案 我建议抛出一个异常,它从签名中清楚地描述了您的方法。如果没有找到匹配项,我不建议返回null或返回-1,因为该方法的行为不会从其签名中反映出来。谁会使用该方法需要记住,或者您需要记录,如果没有找到匹配项,那么它将返回null或-1,并且在客户机代码中,他们需要使用条件来处理它。但通过抛出异常,您将在方法签名本身中记录行为。在客户端代码中,它们必须在方法抛出异常时进行处理
# 4 楼答案 您应该做任何适合您的容器的用例的事情: 如果调用缺少索引的容器可能是错误的 在调用客户机代码中,则应引发异常李> 如果使用缺少的键调用此方法是非常常见的,并且不会 表示错误,那么客户端代码可能需要一些默认值 没有显式设置值时的值。所以你应该回来 这个值李> 如果要显式声明没有值 对于此密钥,并期望客户端代码正确处理此问题, 然后将返回类型更改为Long并返回null李> 在任何情况下,为容器类和方法编写良好的文档,清楚地定义其契约
# 5 楼答案 这将取决于它能返回什么。如果它永远不能返回-1,那么您可以返回-1(这通常用于这类事情) 如果它可以返回-1,那么您可以抛出异常 您也可以使用Long类返回null,但是抛出异常应该更好
# 1 楼答案
您甚至不必在容器类中处理它。在控制器类或调用该方法的类中处理它。如果你真的想,如果什么都没有回来,就返回-1编辑:如果-1是有效值,则选择一个无效值作为返回值。我的偏好是避免NULL
例如
# 2 楼答案
取决于应用程序-这就是我要说的。我会尽量确保你的两个问题在张贴上述
我会回来很久。第一次查询的最小值为,第二次查询的最小值为null
返回
null
并不是那么糟糕——请阅读下面关于我选择的解释当您开发调用其他类和方法的类和方法时,作为经验法则;您应该根据调用方法后逻辑处理合同的方式来定义预期的合同(参数和返回值)
在您的情况下,如果该方法必须返回一个long,并且您没有任何要返回的内容,则返回long。最小值。通过这种方式,您可以将应用程序与负数作为有效返回值的情况隔离开来——很少有处理时间长的程序。最小值
进入第二个问题-当地图中不存在密钥时,应该返回什么。Java SDK展示了一种方法:返回null是最好的选择。这将迫使您在处理代码之前检查get()方法的有效返回值。假设您没有捕获NullPointerException,这也会导致您的应用程序在错过此类检查时崩溃—这是一个很好的快速失败实现,可以帮助您识别丢失的链接
# 3 楼答案
我建议抛出一个异常,它从签名中清楚地描述了您的方法。如果没有找到匹配项,我不建议返回null或返回-1,因为该方法的行为不会从其签名中反映出来。谁会使用该方法需要记住,或者您需要记录,如果没有找到匹配项,那么它将返回null或-1,并且在客户机代码中,他们需要使用条件来处理它。但通过抛出异常,您将在方法签名本身中记录行为。在客户端代码中,它们必须在方法抛出异常时进行处理
# 4 楼答案
您应该做任何适合您的容器的用例的事情:
在任何情况下,为容器类和方法编写良好的文档,清楚地定义其契约
# 5 楼答案
这将取决于它能返回什么。如果它永远不能返回-1,那么您可以返回-1(这通常用于这类事情)
如果它可以返回-1,那么您可以抛出异常
您也可以使用Long类返回null,但是抛出异常应该更好