В блоке Java try{} ... catch{} ... finally{}
код в finally{}
обычно считается "гарантированным" для запуска независимо от того, что происходит в try/catch. Однако я знаю, по крайней мере, о двух обстоятельствах, при которых он не будет выполняться:
- Если
System.exit(0)
вызывается; или, - если исключение генерируется вплоть до JVM и происходит поведение по умолчанию (т.е.
printStackTrace()
и выход)
Есть ли другие программные поведения, которые предотвратят выполнение кода в блоке finally{}
? В каких конкретных условиях будет выполняться код или нет?
EDIT: Как указывало NullUserException, второй случай на самом деле не соответствует действительности. Я думал, это потому, что текст стандартной ошибки печатается после этого в стандартном формате, предотвращая просмотр текста без прокрутки.:) Извинения.