будет запускать любой код. Таким образом, предотвратить это невозможно, но если есть необходимость в предложении finally, включите его.

ичок в Java, и мне было интересно, если у меня есть следующий типичный код Java

public class MyApp {
  public static void main(String[] args) {
    try {
      // do stuff
    } catch {
      // handle errors
    } finally {
      // clean up connections etc.
    }
  }
}

JVM гарантирует, что блок finally всегда будет запущен? Чтобы понять, откуда я пришел, я привык к программам на C / C ++, которые могут просто аварийно завершить работу, если вы разыменуете указатель NULL и у вас не будет кода для запуска после этого.

Но так как я понимаю Java и весь бизнес GC / управляемой памяти в целом, нет такой вещи, как разыменование нулевого указателя, все это ловкое ожидание, так что на самом деле у моей программы нет сбоя, который мог бы заставить ее окончательно пропустить или есть? Например, в Python я обычно делаю

try:
  # do stuff
except AnExceptionIKnewMightHappen:
  # react in an appropriate way
except:
  # log that weird error I had not known could happen

и у меня никогда не было ни одного приложения, умирающего без прохождения моего кода.

Конечно, если ОС по какой-то причине убивает процесс (или если что-то убивает всю систему, например, отключение), Java мало что может сделать. Кроме того, из PHP я знаю неуловимые ошибки, от которых вы не можете защититься, даже если интерпретатор все еще был там после того, как это произошло (по крайней мере, он может вывести правильное сообщение).

Редактировать: Просто для ясности (это никто не понял неправильно), позвольте мне добавить, что я искал вещивнутри моего кода это может привести к тому, что наконец обойдут. Поэтому указание на System.exit было полезным напоминанием, хотя я не понимаю, почему я хотел бы сделать что-то подобное.

Выход из JVM - довольно очевидный путь, и я считаю это внешней причиной. Заметка, указывающая на то, что вы также должны помнить о возможности выхода потоков, пока JVM и приложение продолжают работать, была очень полезной, потому что, хотя мне это и сейчас кажется очевидным, я об этом не думал.