У меня есть базовый класс Base
и дочерний класс Child
, который его расширяет. Base
инвентарь java.lang.AutoCloseable
.Является ли метод close при идиоме try-with-resources не вызывается, если конструктор генерирует исключение?
Предположим, что конструктор для Child
выбрасывает Foo
.
Теперь рассмотрим
try (Base c = new Child()){
/*Some code*/
} catch (final Foo e){
/*Some more code*/
}
ли Base#close
метод вызывается, если исключение? Это не на моей машине, но это что-то, что стандартизовало JLS?
Если «конструктор для' Child' выбрасывает 'Foo', то экземпляр' Child' не существует в области вызова, поэтому 'close()' не может быть вызван. –
Если объекта нет, на нем нельзя вызвать 'close'. –