调试 nullPointerException 的好方法 [已关闭]

2022-09-01 21:58:52

我正在使用java中的eclipse和编程。有时我会遇到一个nullPointerException,它会困扰我几个小时。无论如何,是否可以更好地调试nullPointerExceptions,并找出变量值是什么以及会导致null指针异常的其他事情。


答案 1

查看堆栈跟踪并读取抛出 的行号。几乎总是,该行具有一些方法调用,例如NullPointerException

x.getValue()

如果 是 ,则得到一个 .如果堆栈跟踪顶部的方法不是您的代码,请一直跟踪堆栈,直到到达代码为止。在这种情况下,您经常会传递给不喜欢参数的方法。找到它并修复它。xnullNullPointerExceptionnullnull

另外,当您遇到不是您的方法时,经常会抛出一个 ,请阅读文档。例如,看看 String.replace(CharSequence target, CharSequence replacement)NullPointerException

投掷

NullPointerException- 如果 或 是 。targetreplacementnull

没有比这更清楚的了!

下面是一个示例:

enter image description here

查看第 4 行,我们看到 .这意味着.这很容易。让我们看另一个例子:foo.bar()foonull

enter image description here

追溯到你的代码,我们看到这是抛出。我们应该检查和.让我们附加一个调试器:s.replace(target, replacement)targetreplacement

enter image description here

啊哈! 是。你可以在 Eclipse 中做同样的事情。设置引发异常时的断点,并使用它来检查方法的参数。我在这里很原始,因为我来自一个思想流派,我真的相信,如果他们首先学会以艰难的方式做到这一点,每个人都会过得更好。漏水的抽象等等。replacementnull


答案 2
  1. 在调试时,您可以使用视图来捕获空指针。BreakPoints

    窗口 -> 显示视图 -> 断点

    在视图中,有一个允许您在异常上设置断点。您可以设置 .因此,一旦抛出空指针异常,您就可以检查哪个变量导致空值。"J!"java.lang.NullPointerException

  2. 您可以做的另一件事是在编码时捕获可能的空指针访问。当然,您无法使用此设置捕获所有空指针。但它仍然有帮助,请在日食中设置以下设置。

    首选项 -> Java -> 编译器 -> 错误/警告 -> 空值分析