gpt4 book ai didi

java - 无法确定引发 NullPointer 异常的原因

转载 作者:行者123 更新时间:2023-12-02 12:34:34 24 4
gpt4 key购买 nike

我有一个如下所示的方法:

try {
doStuff();
} catch (Exception ex) {
logger.error(ex);
}

(我并没有真正使用像 doStuff 这样的方法名称 - 这只是为了让事情变得简单)

在 doStuff 中,我做了很多事情,其中​​包括调用数据访问方法(因此,doStuff 中的另一个方法),其结尾如下:

} catch (SQLException ex) {
logger.error(ex);
} finally {
try {
connection.close();
proc.close();
results.close();
} catch (Exception e) {
logger.error(e);
} //<--Exception thrown here. HUH?
}
return stuff;

当单步执行此代码时,我到达倒数第二个花括号(用注释标记),然后跳转到第一个代码块中的 catch 并出现 NullPointer 异常。 results.close() 是在它之前运行的内容(结果不为空)。我的 IDE (NetBeans) 不提供堆栈跟踪(它显示堆栈跟踪为空)或除异常名称之外的任何其他信息(据我所知)。

这段代码之前运行良好。事实上,在它运行时,我更改了数据访问方法(我在其中收到此异常)正在调用的存储过程,然后此错误开始发生(应用程序根本没有停止)。此后我尝试重建和重新启动但无济于事。我可以将存储过程改回来,但我真的想找出这个错误是从哪里来的,因为考虑到代码中发生异常的位置,存储过程甚至成为此错误的一部分是没有意义的。

最佳答案

您的 doStuff() 方法抛出了 SQLException 以外的其他内容,并且没有被捕获。添加一个 catch(Exception e) block 并记录该异常并看看会发生什么。

此代码示例表现出与您描述的相同的行为:

public class TryCatchTest {
public static void main(String[] args) {
try {
System.out.println("foo");
throw new NullPointerException();
} finally {
try {
System.out.println("bar");
} catch (Exception e) {
e.printStackTrace();
}
} // exception thrown here
}
}

关于java - 无法确定引发 NullPointer 异常的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com