我在Java代码中遇到了一些非常奇怪的行为。在我的Eclipse日志控制台上显示了一个异常,显示为Exception:java.lang.NullPointerException
,但没有引用它发生的代码。
在调试过程中,我找出了发生这种情况的一行代码,因此将其放入try-catch
中,希望能捕捉到它。然而,它并没有在catch块中返回。
奇怪的是,即使在它执行后立即在该行抛出异常,并且执行仍正常继续。
有人能告诉我可能的原因吗?我可以附上源代码,但我已经检查了参数,一切似乎都很好。
我写这篇文章的主要原因是,如果你们中的任何一个程序员遇到过这样的行为,我想了解一下这些行为。
发布于 2013-03-02 12:54:38
这可能是Eclipse的一个问题。我以前见过这种行为,重启Eclipse解决了这个问题。
发布于 2013-03-02 13:12:10
请检查您的构建器是否已激活,更改后的源代码是否已自动构建。否则,您的代码更改永远不会将其应用到运行时应用程序中。
我非常确定,执行的源代码与编辑器中显示的源代码不同。
发布于 2013-03-02 21:16:51
如果您看到异常的消息,但没有堆栈跟踪,这是由如下所示的代码引起的:
try
{
// something which causes the exception
}
catch (final Exception err)
{
System.out.println(err);
}
这段代码的问题是它只打印异常的.toString()
方法的结果。对于大多数异常,这只是异常类和消息。这段代码省略了堆栈跟踪,因此使调试问题变得更加困难。
如果要捕获异常,请将代码更改为使堆栈跟踪包含在输出中:
try
{
// something which causes the exception
}
catch (final Exception err)
{
err.printStackTrace();
}
https://stackoverflow.com/questions/15174706
复制