如果
close()不能抛出已检查的异常,则是可选的。但是,如果
close()可以的话,则需要使用一个
catch块或通过从该
try-with-resources块所在的方法中抛出该异常,以一种常规方式来处理一个检查的异常。
更多细节在JLS
14.2.3中
14.20.3.2。扩展的尝试资源
带有至少一个catch子句和/或finally子句的try-with-resources语句称为扩展try-with-resources语句。
扩展try-with-resources语句的含义:
try ResourceSpecification Block[Catches][Finally]
由以下翻译提供给嵌套在try-catch或try-finally或try-catch-finally语句内的基本try-with-
resources语句:
try { try ResourceSpecification Block}[Catches][Finally]
转换的结果是将资源规范“放在” try语句内。这允许扩展try-with-
resources语句的catch子句捕获由于自动初始化或关闭任何资源而导致的异常。此外,与finally关键字的意图保持一致,到执行finally块时,所有资源都将被关闭(或尝试关闭)。
关于这是否与JNDI数据源的使用有关的思考?
是的。
在您提供的示例 try-with-resourses
块中,有必要捕获异常并对其进行处理,或者从该块所在的方法中抛出该异常,因为这
SQLException是一个已检查的异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)