【发布时间】:2015-07-17 06:57:18
【问题描述】:
如果我有这样的一行:
var.getSomething().getSomethingElse().setNewValue(stuff.getValue().getWhatever());
如果该行创建了一个NullPointerException,有没有办法找出哪个方法返回了一个null值?
我相信我能够在每个点处分割线并获得显示哪条线失败的异常。但我不能再让它工作了(也许我记错了)。
这样写是唯一的调试方法吗?
a = var.getSomething();
b = a.getSomehingElse();
c = stuff.getValue();
d = c.getWhatever();
b.setNewValue(d);
有了这个,我应该能够很容易地看到异常发生在哪里。但是这样写感觉效率低下又丑陋。
我使用 Android Studio。以前用过 Eclipse,前段时间改用 Android Studio。
【问题讨论】:
-
为什么不用调试器来估计每个调用的值?
-
在 Eclipse 中,您可以在 Debug-Mode 中选择特定部分,而不是右键单击“inspect”,然后从该部分获取返回值。
-
我相信 logcat 可以显示 NPE 的确切位置。 (IMO) 你必须遵守日志。
-
我可能应该更好地阅读调试工具。我使用 android-studio 并且大多数这些异常都很难重现。通常,用户设法以一些奇怪的方式获得这些异常。所以在我的硬件上调试可能很困难。不,我只看到 logcat 显示的不是行号。
-
在 android studio 中,只需在调试模式下以相同的运行配置运行,当你来到这一行时,行中的每个值都会被写入。您也可以右键单击并评估鼠标选择的表达式。安静直接。
标签: java android debugging nullpointerexception