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

Try-with-resources and return statements in java(java中的try-with-resources和return语句)

本文介绍了java中的try-with-resources和return语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm wondering if putting a return statement inside a try-with-resources block prevents the resource to be automatically closed.

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

如果我写这样的东西,Connection 会被关闭吗?在 Oracle 文档中指出:

If I write something like this will the Connection be closed? In the Oracle documentation it is stated that:

try-with-resources 语句确保每个资源在语句结束时关闭.

The try-with-resources statement ensures that each resource is closed at the end of the statement.

如果由于 return 语句而从未到达语句末尾会发生什么?

What happens if the end of the statement is never reached because of a return statement?

推荐答案

基于Oracle的教程, "[资源] 将被关闭,无论 try 语句是正常完成还是突然完成".它将 abruptly 定义为来自异常.

Based on Oracle's tutorial, "[the resource] will be closed regardless of whether the try statement completes normally or abruptly". It defines abruptly as from an exception.

try 中返回是突然完成的一个例子,如 JLS 14.1.

Returning inside the try is an example of abrupt completion, as defined by JLS 14.1.

这篇关于java中的try-with-resources和return语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:java中的try-with-resources和return语句