当前位置: 首页 > 面试题库 >

Java中的try-with-resources和return语句

嵇浩淼
2023-03-14
问题内容

我想知道将 return 语句放在 try-with-resources 块中是否会阻止资源自动关闭。

try(Connection conn = ...) {
    return conn.createStatement().execute("...");
}

如果我这样写, 连接 会关闭吗?在Oracle文档中指出:

try-with-resources语句可确保在语句末尾关闭每个资源。

如果由于return语句而从未到达该语句的末尾,该怎么办?


问题答案:

根据Oracle的教程,“无论try语句正常完成还是突然完成,[[资源]都将关闭”。它定义abruptly为异常。

返回内部try是JLS
14.1
定义的突然完成的示例。



 类似资料:
  • 我想知道在try-with-resources块中放入return语句是否会阻止资源被自动关闭。 try-with-resources语句确保每个资源在语句结束时关闭。 如果由于return语句而始终无法到达语句的结尾,会发生什么情况?

  • 主要内容:Java SE 7:Try-With-Resources基础知识,Java SE 7:Try-With-Resources规则,Java SE 9:Try-With-Resources改进在这篇文章中,我们将讨论Java SE 9中的一些改进语句。现在让我们开始学习这个构造。 Java SE 7:Try-With-Resources基础知识 Java SE 7引入了一个新的构造: 语句,用于更好的异常处理。 如果没有这个构造,开发人员必须编写大量冗余和难看的代码。 如果开发人员忘记正确

  • 问题内容: 如何使用Java 7的自动资源管理(try-with- resources语句)集成创建/接收连接,查询数据库以及可能处理结果的通用JDBC习惯?(教程) 在Java 7之前,通常的模式是这样的: 使用Java 7,您可以: 这将关闭和,但是回滚又如何呢?我无法添加包含回滚的catch子句,因为该连接仅在try块内可用。 您是否还在try块之外定义连接?这里的最佳实践是什么,特别是如果

  • 在此Java程序示例中: 当在静态方法example()的正文中抛出OutOfMemoryError错误时,在终止静态方法example()之前,连接“con”和语句“stmt”是否会自动关闭,尽管没有任何“cat”捕获这些错误,因此在main()的其余代码中,是否确定这两个对象已关闭? 谢谢

  • 下面的try with resources语句是来自Java文档的示例 根据文件, 用资源尝试语句确保每个资源在语句末尾关闭。 我的问题是,为什么我需要在try关键字之后立即在括号内声明资源。(如上面的BuffereReader) BufferReader实现了java。lang.AutoCloseable 所以为什么不支持这样的事情, 一旦退出尝试,就隐式关闭资源对象。(正如它所实现的自动关闭)

  • 问题内容: 我有一种使用JDBC从数据库中获取用户的方法: 我应该如何使用来改进此代码? 我已经尝试使用下面的代码,但是它使用了很多块,并且并没有太大地提高可读性。我应该以其他方式使用吗? 问题答案: 在你的示例中,无需进行外部尝试,因此你至少可以从3降为2,并​​且也不需要在资源列表的末尾关闭。使用两个try块的优点是所有代码都在前面显示,因此你不必引用单独的方法: