当前位置: 首页 > 面试题库 >

以编程方式抛出NullPointerException可以吗?

益兴生
2023-03-14
问题内容

当存在后置条件时,该方法的返回值一定不能为null,该怎么办?

我可以

assert returnValue != null : "Not acceptable null value";

但是断言可以关闭!

那可以吗

if(returnValue==null)
      {
           throw new NullPointerException("return value is null at method AAA");
      }

还是针对此类情况使用用户定义的异常(例如NullReturnValueException)更好?


问题答案:

我认为在JVM为您执行操作之前尽早抛出NPE没问题-特别是对于null参数。对此似乎有一些争论,但是Java
SE库中有许多示例正是这样做的。我不明白为什么NPE在您自己不能扔掉它方面应该是神圣的。

但是,我离题了。这个问题是关于不同的东西。您正在谈论的是后置条件,该条件说明返回值不能为null。在这种情况下,肯定为null意味着您 在very方法内
有一个错误吗?

您甚至将如何记录?“如果返回值意外为null,则此方法将引发NullPointerException”?不解释这怎么可能?不,我在这里使用一个断言。异常应该用于可能发生的错误-
不能覆盖方法内部出现问题时可能发生的事情,因为这对任何人都没有帮助。



 类似资料:
  • 所以我对SonarQube有一个无法解决的问题。

  • 问题内容: 我们可以通过编程方式在自己的Java代码中使用javap吗? 例如,以下代码: 在命令行中使用javap,我们得到了: 我可以使用javap的API仅打印常量池吗? 问题答案: Apache BCEL 提供.class文件解析的封装,该封装提供了一组API。几乎对于.class文件中的每个元素,BECL API中都有一个对应的Class来表示它。因此,从某种角度来说,如果您只想打印出类

  • 问题内容: 我知道我可以使用以下技术找出Java中的变量是否为空: 如果->太多工作 ->它告诉我哪一行引发异常 手动使用调试器->太慢 考虑以下代码行: 我想知道是否有一种通用的方法来以编程方式找出是什么变量(而不仅仅是行)在特定的代码区域中引发了NullPointerException。在示例中,知道 问题答案: 由于有可能导致空指针异常而无需涉及变量: 我不得不说,没有通用方法可以将空指针异

  • 问题内容: 我正在写一个简单的命令行游戏。我有很多功能,所有功能都将在这里发布。 问题:程序可以编译,但是当被调用并选择了一个数字时,我得到了: 这是我的代码: 有人可以在这里指出正确的方向吗?我究竟做错了什么?我感觉这是类“玩家”和在“游戏”类中创建的对象的类问题。 问题答案: 你得到一个因为是。您在这里做了什么: 是声明 局部 变量。静态类变量保持不变,因此保持不变。 这称为阴影(JLS,第6

  • 问题内容: 说我有两个JavaBeans 和。 如果创建一个Person对象的列表,我想编组成这样的东西: 可以使用这里描述的技术: 使用JAXB解组/编组List 通过使用和注释JaxbList,可以将其编组为上述XML。 但是,能够重用相同的类来封送对象列表也很好。实际上,我将有许多其他类型的bean。我可以这样: 但是,理想情况下,最好用类名的复数形式替换“列表”,用类名替换“ item”。

  • 我正在尝试在Android上添加Wifi网络,我想知道如何连接到不广播其SSID的Wifi网络(它是否有空SSID或带有\0s的清晰SSID)。 这是我目前用于广播其SSID的Wifi网络的内容: