Java 使用Eclipse进行调试时,跟踪空指针异常的最佳方法是什么?
我们在使用Eclipse跟踪代码中的空指针异常时遇到困难,我想知道Eclipse是否在这方面提供了帮助。Eclipse提供了哪些方法来轻松跟踪空指针异常 为了说明这一点,下面是一个抛出NPE的典型代码示例:Java 使用Eclipse进行调试时,跟踪空指针异常的最佳方法是什么?,java,eclipse,debugging,nullpointerexception,Java,Eclipse,Debugging,Nullpointerexception,我们在使用Eclipse跟踪代码中的空指针异常时遇到困难,我想知道Eclipse是否在这方面提供了帮助。Eclipse提供了哪些方法来轻松跟踪空指针异常 为了说明这一点,下面是一个抛出NPE的典型代码示例: if (myObject.getDimensionMap().get(keyValue.getConcept()).isMeasureDimension()) { 除非我弄错了,否则对象可能为空有5种可能性: myObject可以为null myObject.getDimensionMa
if (myObject.getDimensionMap().get(keyValue.getConcept()).isMeasureDimension()) {
除非我弄错了,否则对象可能为空有5种可能性:
- myObject可以为null
- myObject.getDimensionMap可能为空
- keyValue可以为null
- keyValue.getConcept可以为null
- myObject.getDimensionMap().get(keyValue.getConcept)可以为null
try {
doSomething
...
callSomething
callSomethingElse
...
offending if test which throws the NPE
...
} catch (Exception e) {
// Format exception and pass back to client
}
当然,用户永远不想看到短语NullPointerException
谢谢。从Eclipse运行/添加java异常断点 选择NullPointerException。确保勾选了“捕获异常时挂起”
唯一的缺点是它会在任何有意在内部引发和捕获NPE的代码上触发。从Eclipse运行/添加java异常断点 选择NullPointerException。确保勾选了“捕获异常时挂起”
唯一的缺点是它会触发任何有意在内部引发和捕获NPE的代码。问题真的是:“除了修复代码或正确调试它之外,Eclipse还为我提供了什么其他方法来发现错误?”因为如果是,答案是:无。即使是异常断点也只会将您带到行,因为行是Java中定义的调试的基本单元。如果您能告诉我们为什么他们花了这么长时间才找到空的内容,这会有所帮助。在一般情况下,它应该非常简单:设置异常断点,当程序停止时,检查变量,如果一切正常,进入第一个方法,检查变量,进入下一个方法,检查变量…好的,我将更新问题,说明为什么花了这么长时间。我希望Eclipse中有一个功能,比如“在抛出系统异常时中断连接”@biziclop啊!在重读之后,我看到您也提到了异常断点,所以我向您投票。谢谢-我们不知道此功能。干杯,这是拼图中缺失的部分。:)问题真的是这样的吗:“除了修复代码或正确调试代码外,Eclipse还为我提供了什么其他方法来发现bug?”因为如果是,答案是:没有。即使是异常断点也只会将您带到行,因为行是Java中定义的调试的基本单元。如果您能告诉我们为什么他们花了这么长时间才找到空的内容,这会有所帮助。在一般情况下,它应该非常简单:设置异常断点,当程序停止时,检查变量,如果一切正常,进入第一个方法,检查变量,进入下一个方法,检查变量…好的,我将更新问题,说明为什么花了这么长时间。我希望Eclipse中有一个功能,比如“在抛出系统异常时中断连接”@biziclop啊!在重读之后,我看到您也提到了异常断点,所以我向您投票。谢谢-我们不知道此功能。干杯,这是拼图中缺失的部分。:)非常好,谢谢你对内部NPE的警告。这里还有一个非常清楚的解释:为了避免在不相关的异常(通常在启动某些库时抛出)上停止,您可以将常规断点设置为尽可能靠近有问题的代码,并且只有在执行达到该点时才设置异常断点。非常好,谢谢关于内部NPE的警告。这里还有一个非常清楚的解释:为了避免在不相关的异常(通常在某些库启动时抛出)上停止,您可以设置一个尽可能靠近有问题代码的常规断点,并且只在执行达到该点时设置异常断点。