W jaki sposób Java System.exit () działa z blokami try / catch / finally? [duplikować]

To pytanie ma już tutaj odpowiedź:

Czy blok ostatecznie zawsze jest wykonywany w Javie? 46 odpowiedzi

Wiem o bólach głowy, które polegają na zwracaniu w blokach try / catch / finally - przypadkach, w których powrót w końcu jest zawsze zwrotem dla metody, nawet jeśli zwrot w bloku try lub catch powinien być tym, który został wykonany.

Czy to samo dotyczy System.exit ()? Na przykład, jeśli mam blok próbny:

try {
    //Code
    System.exit(0)
}
catch (Exception ex) {
    //Log the exception
}
finally {
    System.exit(1)
}

Jeśli nie ma wyjątków, zostanie wywołany System.exit ()? Jeśli wyjście było instrukcją return, wtedy linia System.exit (1) zawsze byłaby wywoływana (?). Nie jestem jednak pewien, czy wyjście zachowuje się inaczej niż powrót.

Kod jest w skrajnym przypadku, który jest bardzo trudny, jeśli nie niemożliwy do odtworzenia, więc nie mogę napisać testu jednostkowego. Spróbuję dzisiaj przeprowadzić eksperyment, jeśli dostanę kilka darmowych minut, ale i tak jestem ciekawy, a może ktoś na SO zna odpowiedź i może ją dostarczyć wcześniej lub w przypadku, gdy nie mogę uruchomić eksperyment.

questionAnswers(6)

yourAnswerToTheQuestion