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

Java的NullPointerException是否可以更改为报告哪个变量为null?

宇文嘉勋
2023-03-14
问题内容

NullPointerExceptionJava中,似乎只报告,它发生在一个特定的代码行。如果一行代码中使用了多个变量,是否可以更改该异常以声明哪个变量为null?


问题答案:

否,类文件中的调试信息没有足够的信息来允许这样做。

但是,您可以改善这种情况。有两件事会导致引发NPE:

  • .解引用变量,像foo.bar()
  • [索引的阵列,像args[0]

如果您编写代码,那么在给定的代码行中只有 其中之一 ,那么毫无疑问,哪一个引起了NPE。它将引入 很多
临时变量,但是在调试时,您将获得更多可用信息。



 类似资料:
  • 问题内容: 我宣布了两张牌: 这有效: 但是为什么这不起作用?它在第二行给了我NullPointerException: 问题答案: 您要声明一组2手牌。这只是设置阵列。然后,您需要实例化数组中的手形对象。 说

  • 我想知道OpenCV是否能够将摄像头(dev/video1)设置为复合或S-video输入。 我使用的摄像头仅在复合输入中运行,但默认情况下,v4l2在S-Video输入中打开dev/video1。V4l2能够通过QT V4l2 utils应用程序从S视频转换为复合输入。 opencv正在使用v4l从相机捕获图像,我想在代码中使用OpenCV更改为复合输入。那有可能吗?如果不是,解决办法是什么?

  • 标准在哪里定义易失性变量可以在未被检测到的情况下发生变化? 我发现了两个关于不稳定的规范性文本: 简介。执行/7: 读取由volatile glvalue([basic.lval])指定的对象、修改对象、调用库I/O函数或调用执行这些操作的函数都是副作用,这些都是执行环境状态的变化。表达式(或子表达式)的计算通常包括值计算(包括确定用于glvalue计算的对象的标识和获取之前分配给对象用于prva

  • 问题内容: 给定两个值x和y,我想将它们传递给另一个函数,交换它们的值并查看结果。这在Java中可行吗? 问题答案: 不与原始类型(,,等)。Java按值传递东西,这意味着函数传递的变量是原始变量的副本,并且您对该副本所做的任何更改都不会影响原始变量。 现在,对象有所不同,因为对象变量的“值”实际上是对对象的引用-复制该引用使其指向完全相同的对象。 局限性在于,您仍然无法以调用者可以看到的任何方式

  • 问题内容: 我有一类具有各种成员变量的类。有一个构造函数,有getter方法,但没有setter方法。实际上,该对象应该是不变的。 现在我注意到了以下几点:当我使用getter方法获得变量列表时,可以添加新值,依此类推- 可以更改。下次调用此变量时,将返回更改的内容。怎么会这样?我没有再设置它,我只是在做它!使用这种行为是不可能的。那么这里有什么区别? 问题答案: 仅仅因为 对 列表 的引用 是不

  • 问题内容: 我必须基于将动态提供的各种参数来生成报告。在某些情况下,参数可以为null。例如,我必须从具有 ID* , 姓名 , 年龄 , 性别 和 maritalStatus 作为字段的表 Person中 ,生成有关 30岁已婚男性的 报告。在另一些时候,可能需要 不考虑年龄 就 结婚的女性 。如果我在这两种情况下都使用相同的碧玉,则年龄限制在第二种情况下将为null。有什么办法可以解决这种情况