Будут ли попытки-с-ресурсами всегда закрывать ресурс независимо от состояния ошибки? Я имею в виду рассмотреть ниже код:Будут ли попытки-с-ресурсами всегда закрывать ресурсы
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
Будет br
всегда быть закрыты? Я прочитал Oracle документацию, которая говорит:
он будет закрыт, независимо от того, выполняет ли заявление попытки нормально или резко
Так это будет работать, работает ли программа нормально или бросает исключение. Но как насчет таких условий, как System.exit
или JVM
аварии? Я знаю, что эти условия не будут работать для блока finally
. Итак, есть ли условие, при котором try-with-resources терпят неудачу?
Это просто я прошу любопытства, может кто-то пролить свет на это?
Нет, он также не будет закрывать ресурсы, если ядерный взрыв испарит компьютер. Но, к счастью, нам не нужно беспокоиться об этих случаях. – Kayaman
Почему саркастический? Неправильно спросить сомнения? –
Официальные документы не говорят прямо (https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html), но он, похоже, склоняется в сторону закрытия. Я предполагаю, что «после завершения программы с ним» будет после завершения попытки (ресурса). –