plsql如何执行单个语句

Java 7最有用的新功能之一是引入了try-with-resources语句 [AKA 自动资源管理 ( ARM )]。 try-with-resources语句的吸引力在于它承诺 “确保在语句末尾关闭每个资源”。 在这种情况下,“资源”是实现AutoCloseable及其close()方法并在try-with-resources语句的“ try”子句中实例化的任何类。

Java语言规范 [JLS]在14.20.3节 (在这种情况下为Java SE 10 JLS )中详细描述了try-with-resource语句 。 JLS声明“ try -with-resources语句是使用局部变量(称为resources )进行参数化的,这些局部变量在try块执行之前进行了初始化,并在执行try之后以与初始化时相反的顺序自动关闭块。”

JLS明确指定可以相对于单个try -with-resources语句定义多个资源,并且它指定如何指定多个资源。 具体地说,它表明try可以跟随一个“ ResourceSpecification ,其由一个”的“ ResourceList ,其由一个或多个“的” 资源 “秒。 当声明的资源多于一个时,多个资源用分号( ; )分隔。 用分号分隔的列表指定多个资源非常重要,因为try -with-resources语句将不支持(不会自动关闭)未以此方式声明的任何候选资源。

try -with-resources语句中指定多个资源时,最可能的错误源是“嵌套”“资源”的实例化,而不是显式地实例化每个变量的局部变量,而在每个实例化之间不使用分号。 以下示例将说明差异。

接下来显示两个荒谬但说明性的类。 每个类都实现AutoCloseable ,因此可以与try -with-resources结合使用,并且在与try -with-resources语句正确使用时将自动调用其close()方法。 命名它们以反映可以使用InnerResource的实例实例化OuterResource

InnerResource.java

package dustin.examples.exceptions;import static java.lang.System.out;public class InnerResource implements AutoCloseable
{public InnerResource(){out.println("InnerResource created.");}public InnerResource(final RuntimeException exceptionToThrow){throw  exceptionToThrow != null? exceptionToThrow: new RuntimeException("InnerResource: No exception provided.");}@Overridepublic void close() throws Exception{out.println("InnerResource closed.");}@Overridepublic String toString(){return "InnerResource";}
}

OuterResource.java

package dustin.examples.exceptions;import static java.lang.System.out;public class OuterResource implements AutoCloseable
{private final InnerResource wrappedInnerResource;public OuterResource(final InnerResource newInnerResource){out.println("OuterResource created.");wrappedInnerResource = newInnerResource;}public OuterResource(final InnerResource newInnerResource,final RuntimeException exceptionToThrow){wrappedInnerResource = newInnerResource;throw  exceptionToThrow != null? exceptionToThrow: new RuntimeException("OuterResource: No exception provided.");}@Overridepublic void close() throws Exception{out.println("OuterResource closed.");}@Overridepublic String toString(){return "OuterResource";}
}

现在,可以使用刚刚定义的两个类来证明在用分号分隔的列表中的同一try -with-resources语句中正确声明每个实例的实例与在外部资源的构造函数中错误地嵌套内部资源的实例之间的区别。 后一种方法效果不理想,因为就调用其AutoCloseable.close()方法而言,没有本地定义变量的内部资源不会被视为“资源”。

下一个代码清单演示了在try -with-resources语句中实例化“资源”的错误方法。

try -with-resources语句中实例化资源的错误方法

try (OuterResource outer = new OuterResource(new InnerResource(), new RuntimeException("OUTER")))
{out.println(outer);
}
catch (Exception exception)
{out.println("ERROR: " + exception);
}

执行上述代码后,输出“ InnerResource created”。 可以看到,但是从未显示与资源关闭相关的输出。 这是因为InnerResource的实例是在对OuterResource类的构造函数的调用中实例化的,并且从未在try -with-resource语句的资源列表中分配给其自己的单独变量。 对于真正的资源,这意味着资源没有正确关闭。

下一个代码清单演示了在try -with-resources语句中实例化“资源”的正确方法。

try -with-resources语句中实例化资源的正确方法

try(InnerResource inner = new InnerResource();OuterResource outer = new OuterResource(inner, new RuntimeException("OUTER")))
{out.println(outer);
}
catch (Exception exception)
{out.println("ERROR: " + exception);
}

当执行上面紧接的代码时,输​​出将包括“ InnerResource created”。 并且“ InnerResource已关闭。” 因为InnerResource实例已在try -with-resources语句中正确分配给变量,因此即使实例化期间发生异常,也将正确调用其close()方法。

Java教程的try-with-resources语句部分包括几个示例,这些示例正确地将try -with-resources中的资源指定为以分号分隔的单个变量定义。 一个示例通过java.util.zip.ZipFile和java.io.BufferedWriter展示了这种正确的方法,而另一个示例通过java.sql.Statement和java.sql.ResultSet的实例展示了这种正确的方法。

在JDK 7中引入try -with-resources是对该语言的一种受欢迎的补充,它使Java开发人员可以更轻松地编写不太可能泄漏或浪费资源的资源安全的应用程序。 但是,当在单个try -with-resources语句中声明多个资源时,重要的是要确保每个资源都单独实例化并分配给在try的资源说明符列表中声明的自己的变量,以确保每个资源都是正确关闭。 一种快速的检查方法是确保对于try指定的n个 AutoCloseable实现资源,应该有n-1个分号来分隔这些实例化的资源。

翻译自: https://www.javacodegeeks.com/2018/08/carefully-specify-multiple-resources.html

plsql如何执行单个语句

plsql如何执行单个语句_在单个try-with-resources语句中仔细指定多个资源相关推荐

  1. 在单个try-with-resources语句中仔细指定多个资源

    Java 7更有用的新功能之一是引入了try-with-resources语句 [AKA 自动资源管理 ( ARM )]. try-with-resources语句的吸引力在于其承诺 "确保 ...

  2. mysql更新一条语句_讲讲一条MySQL更新语句是怎么执行的?

    这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程: 1.连接验证及解析 客户端与MySQL Server建立连接,发送语句给MySQL Server,接 ...

  3. python的for循环语句_干货丨Python的循环语句基础讲解!

    我们知道计算机程序语言一般是按照顺序执行的,那么编程语言就提供了各种控制结构,允许更复杂的执行路径,其中循环语句的作用就是允许我们执行一个语句或语句组多次. 在Python中循环语句的类型主要有以下几 ...

  4. 判断语句_如何学好C语言判断语句?攻略if语句是第一步

    C语言,是全球使用最多的编程语言.上次我们谈到了switch语句,但在C语言中,if条件构成的选择结构程序很重要.在实际问题中,往往需要对不同变量进行比较,然后分别执行不同的语句.如何使用if语句呢? ...

  5. mysql分组排列的查询语句_数据的排序与分组语句_MySQL

    bitsCN.com 数据的排序与分组语句 使用SQL语句执行查询操作时,我们可能发现查询出的数据结果的排序是无序的.为了更好的观察数据表中的查询结果,开发人员或者用户经常要对查询的数据进行排序操作, ...

  6. java分页sql语句_「sql分页」sql语句 实现分页 - seo实验室

    sql分页 sql语句 实现分页 /* 分页思想:比如你要每页获取10条记录,当你显示第5页的记录时, 也就是选取第40条至50条的记录.首先应该从所有的记录集中选取 50条记录,同时进行倒序,再从中 ...

  7. if else语句_你敢信?if语句执行完,竟然也会执行else语句

    从计算机底层原理来说,Java语句中的 if 指令和 else 指令分属于两个不同的逻辑分支,在同一段代码中,只要执行了if语句就不会执行else语句.所以,这个面试题的考点并不是让你从计算机底层原理 ...

  8. mybatisplus执行sql语句_一条更新的SQL语句是如何执行的?

    提出问题 UPDATE student SET score = score + 1 WHERE uid = 666; 以上就是一条最简单的SQL更新语句,想要知道上面这句SQL语句是怎么执行的先要了解 ...

  9. python 包含语句_如何检查句子是否包含Python中的某个单词然后执行操作?

    根据@knitti的评论,问题是你需要先将句子分成单词,然后检查: term = "message" #term we want to search for input = raw ...

最新文章

  1. wms仓储系统培训_WMS系统开创智慧仓储新方向
  2. C++之虚函数是如何实现的
  3. ADS1675调试无时钟输出
  4. html5多颜色灯笼旋转,HTML5 Canvas 漂亮的斑马条纹灯笼
  5. Unity3D之UGUI基础7:Scrollbar卷动条
  6. V.Replication and Sharding(创建主从数据库)
  7. Photoshop 22.5 新功能:更多天空替换素材下载、弯曲变形与探索功能的强化
  8. Restful无状态请求和网关
  9. [转]Javascript 调用MSAgent(Desc:网页中出现魔法巫师)
  10. DroidCam通过数据线调用手机摄像头的方法二
  11. CAD梦想画图如何打印图形
  12. 交通信号灯规范国家标准出台
  13. 845.数组中的最长山脉
  14. 冰点还原8.53破解版
  15. java block报错图_Poi读取Excle报错 java.util.zip.ZipException: invalid stored block lengths
  16. Python-实现根据关键词获取网页内容
  17. 基于51的LCD1602计算器
  18. JavaEE | 增强for循环
  19. Web APIs介绍(四)——offset/client/scroll/轮播图/本地存储
  20. 【加量不加价,提供只读脚本】小麦苗健康检查脚本说明(Oracle巡检脚本)

热门文章

  1. 2021-09-211547G - How Many Paths?
  2. 尽梨了(贪心+dp)
  3. [HDU 6157]The Karting(DP)
  4. 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)
  5. test2 3-16 2021 模拟赛two
  6. [LOJ]体育成绩统计 / Score (无脑模拟,没有脑子,就是上!)
  7. CF1500C Matrix Sorting(拓扑排序)
  8. AT3860-[AGC020F]Arcs on a Circle【dp】
  9. 操作系统复习笔记 07 Process Synchronization 进程同步
  10. 分布式系统架构常识:CAP理论