最终{}中的java捕获异常?必须
我感到困惑
我用英语写了一个小程序。jsp。最后,需要关闭ResultSet
、Statement
和Connection
。我也在finally { }
中编写结束代码,但是当页面运行时,它返回错误,我没有捕获异常
我读了一些论坛。其他人在finally { }
中没有发现任何异常
有什么提示吗
你可以在下面搜索框中键入要查询的问题!
我感到困惑
我用英语写了一个小程序。jsp。最后,需要关闭ResultSet
、Statement
和Connection
。我也在finally { }
中编写结束代码,但是当页面运行时,它返回错误,我没有捕获异常
我读了一些论坛。其他人在finally { }
中没有发现任何异常
有什么提示吗
# 1 楼答案
也许我已经老了,但是在
catch
块中捕获异常有什么不对呢# 2 楼答案
最后{ 试一试{ 结果集。close(); }捕获(E){ }最后{ 试一试{ 陈述close(); }捕获(E){ }最后{ 康涅狄格州关闭(); } }
}
# 3 楼答案
最后,{}不执行任何异常捕获。一个finally{}块的存在是为了确保运行某些代码,不管try{}块是否达到了它的自然结束,或者它是否因为发生了异常而临时跳转到finally{},并且finally{}块正在运行。但是在最后{}结束后,例外会继续它愉快的业务,在堆栈上跳跃,愉快地破坏你的程序
如果要实际捕获异常并阻止它进一步展开堆栈,请使用catch(){}。但是不要盲目地使用catch——捕获一个你实际上不知道如何从中恢复的异常比崩溃要糟糕得多,因为现在你的程序不能正常工作,并且你没有异常堆栈跟踪告诉你原因
您的结果集、语句和连接几乎肯定已关闭。然后异常继续发生并导致程序崩溃,因为这与结果集、语句和连接无关
实际的例外是什么
# 4 楼答案
您必须捕获代码
finally
块中的异常。因为您必须捕获catch
块中的异常。嵌套的try/catch
是一种常规的东西(尽管很难看)这里一个重要的注意事项是,您可以在方法的
throws
子句中声明在finally中发生的异常。但是,这将导致异常最终覆盖丢失的原始异常。例如,您将看到一个NullPointerException
,而不是FileNotFoundException
顺便说一下,避免在JSP文件中包含代码。将其放在servlet中
# 5 楼答案
如果你说出try块中的内容,这会有所帮助。您可能没有捕获到适当的异常,或者您的代码在finally中抛出异常
最后没被抓住是可以的
更合适的做法是使用catch捕获特定的异常,然后在那里处理特定的清理。对于任何即使发生异常也必须执行的代码,使用finally
# 6 楼答案
听起来您有一个老问题,就是需要在finally块中关闭(),但是close()本身会抛出一个异常。试试下面这样的东西