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语句