示例:
try(ResultSet rs = DriverManager.getConnection(url, us, pw).createStatement().executeQuery(sql)) {
//mycode
}
我没有任何对Connection
或语句
的引用,它们也会被关闭吗?
谢啦
根据语言规范,它只会关闭ResultSet
对象。这是因为try with resources语句使用资源规范,其中使用变量声明资源:
tryWithResources声明:
尝试ResourceSpecification Block[catch][Finally]
资源规范:
(资源列表[;])
资源列表:
Resource{;Resource}
资源:
{VariableModifier}unnantype VariableDeclaratorId=表达式
不管错误情况如何,使用资源尝试是否总是关闭资源?我的意思是考虑以下代码: 会一直关闭吗?我读过Oracle文档,其中说: 无论try语句是正常完成还是突然完成,它都将关闭 因此无论程序正常运行还是抛出异常,它都将起作用。但是,类似或崩溃的情况怎么办?我知道这些条件对块不起作用。那么,使用资源尝试失败的条件是否存在? 这只是我请求的好奇心,谁能说明这一点吗?
根据Oracle文档 try with resources语句是声明一个或多个资源的try语句。资源是一个对象,在程序完成后必须关闭它。try with resources语句确保在语句末尾关闭每个资源。任何实现java的对象。AutoCloseable,其中包括实现java的所有对象。伊奥。可关闭,可用作资源 如果资源未实现AutoCloseable,则无法在try块中声明,必须在主体部分中声明
zval通过引用计数来节省内存的,这个我们都知道了,但你可能不知道的是,某个zval对应的{资源}在实现时也使用了引用计数这种概念,也就是有了两种引用计数! {资源}对应的zval的类型是IS_RESOURCE,它并不保存最终的数据,而只保存一个数字,即EG(regular_list)中的数字索引。 当{资源}被创建时,比如我们调用sample_fopen()函数: $a = sample_fop
我正在为面向对象编程的秋季考试做准备,其中一种任务是提供代码输出,这通常包括一些异常处理问题。 现在我的问题是什么时候用资源尝试关闭它的资源,因为我的输出严格依赖于实现AutoCloseable的类的输出。 在提供的代码中,我不明白为什么“close 1”输出在“close 40”之前,或者为什么对象A(40)在这个块的末尾被关闭。是因为A(50)和A(40)是同一类型的吗? 我的主要问题是,Au
由于Java9,我们可以有效地使用最终变量与资源。 下面的示例显示了一种情况,其中一个资源初始化引发异常。 当我运行这个示例时,我得到的唯一输出是RuntimeException,这意味着Resource1没有关闭。这是意料之中的,因为它没有在try with resources中初始化。 但是,这是预期的结果,还是我遗漏了什么? 因为,如果这实际上是它应该工作的方式,那么在我看来,这种新语法实际
问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 互联网上的某些JSON数据服务被设计为仅由服务器使用,而忽略了仅由Web应用程序直接使用的可能性。 由于跨站点的问题,如果此类服务提供了格式或启用了支持,则它