Мне известны головные боли, связанные с возвратом в try/catch/finally blocks - случаи, когда return в конечном итоге всегда является возвратом метода, даже если возврат в блок try или catch должен быть выполнен.
Однако, что же касается System.exit()? Например, если у меня есть блок try:
try {
//Code
System.exit(0)
}
catch (Exception ex) {
//Log the exception
}
finally {
System.exit(1)
}
Если нет исключений, которые вызовет System.exit()? Если выход был оператором return, тогда строка System.exit(1) всегда вызывалась бы (?). Тем не менее, я не уверен, что выход ведет себя иначе, чем возврат.
Код в крайнем случае, который очень трудно, если не невозможно, воспроизвести, поэтому я не могу написать unit test. Я собираюсь попытаться запустить эксперимент позже сегодня, если я получу несколько бесплатных минут, но мне все равно любопытно, и, возможно, кто-то из них знает ответ и может предоставить его до или в случае, если я не могу запустить эксперимент.