【发布时间】:2016-04-13 05:22:32
【问题描述】:
我有一个基类Base 和一个子类Child 扩展它。 Base 实现 java.lang.AutoCloseable。
假设Child 的构造函数抛出Foo。
现在考虑
try (Base c = new Child()){
/*Some code*/
} catch (final Foo e){
/*Some more code*/
}
如果抛出异常,是否调用Base#close 方法?它不在我的机器上,但这是 JLS 标准化的东西吗?
【问题讨论】:
-
如果“
Child的构造函数抛出Foo”,则调用范围内不存在Child的实例,因此无法调用close()。 -
如果没有对象,就无法调用
close。