¿Cómo funciona System.exit () de Java con los bloques try / catch / finally? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Un bloque finalmente se ejecuta siempre en Java? 46 respuestas

Soy consciente de los dolores de cabeza que involucran el retorno en los bloques try / catch / finally - casos en los que el retorno en el final es siempre el retorno del método, incluso si un retorno en un bloque try o catch debería ser el ejecutado.

Sin embargo, ¿se aplica lo mismo a System.exit ()? Por ejemplo, si tengo un bloque try:

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

Si no hay excepciones, ¿a qué System.exit () se llamará? Si la salida era una declaración de retorno, entonces la línea System.exit (1) siempre se llamaría (?). Sin embargo, no estoy seguro de si la salida se comporta de manera diferente a la devolución.

El código está en un caso extremo que es muy difícil, si no imposible, de reproducir, por lo que no puedo escribir una prueba de unidad. Voy a intentar realizar un experimento más tarde hoy, si tengo unos minutos libres, pero de todos modos tengo curiosidad, y tal vez alguien en SO sepa la respuesta y pueda proporcionarla antes o en caso de que no pueda ejecutar una prueba. experimentar.

Respuestas a la pregunta(6)

Su respuesta a la pregunta