¿Cuál es la diferencia entre “finally” y “no finally” (try-catch)? – java try-catch

Pregunta:


Diferencia entre terminar con finally:

try {
     // algo
} catch(Exception e) {
     // algo
} finally {
     // algo
}

Y no terminar con finally:

try {
     // algo
} catch(Exception e) {
     // algo
}
// algo (no finally)

Yo había leído que en finally siempre se ejecuta por más que sea una ‘exception’ o simplemente cuando no halla errores, pero, ¿no sería lo mismo sin el “finally“?, ¿Qué cambia?…

Preguntado por: Java doub

Francisco Romero

Tal y como dice la documentación:

The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs.

lo que viene a decir:

El bloque finally siempre se va a ejecutar cuando el bloque try termine. Esto asegura que el bloque finally se ejecuta incluso si una excepción inesperada ocurre.

Por lo tanto, aquí podemos ver la principal diferencia. Si no utilizamos el bloque finally, si una excepción inesperada ocurre, se ejecutará la parte que esté dentro del bloque catch pero solamente eso. De esta manera, te aseguras que también habrá otro código que se ejecutará siempre aunque una excepción ocurra. Además, si ocurre una excepción inesperada al ejecutar el bloque catch, el código del bloque finally se ejecutará.

Excepción

Sin embargo, tal y como indica la documentación, hay en algunos casos en los que el bloque finally podría no ejecutarse:

Note: If the JVM exits while the try or catch code is being executed, then the finally block may not execute. Likewise, if the thread executing the try or catch code is interrupted or killed, the finally block may not execute even though the application as a whole continues.

lo que traducido sería:

Nota: Si la Máquina Virtual de Java (JVM) se termina mientras el código del try o del catch está siendo ejecutado, entonces el bloque finally podría no ejecutarse. De la misma manera, si el hilo ejecutando el código del try o catch es interrumpido o detenido, el bloque finally podría no ejecutarse incluso aunque la aplicación en su conjunto continúe.

Fuente

Related Posts:

Tomcat no encuentra los recursos – java angularjs http
Pregunta: Bueno tengo una aplicación con AngularJS que hace peticiones al API de gitHub como un ejemplo para aprender a usar AngularJS, pero el problema ...
Crear cuenta regresiva N segundos mientras se visualiza una Activity en Android – java android
Pregunta: Quiero implementar una cuenta regresiva de N segundos, que se inicie cuando la Activity se muestre, se pare el contador cuando el usuario decide ...
¿Es posible capturar un segfault con try/catch? – c++ try-catch
Pregunta: Para comprobar si es posible hice lo siguiente: try { int *x = 0; *x = 1234; } catch(...) { ...
¿Es legal leer imágenes y descripciones de otro sitio web y ponerlas en mi app? – java woocommerce
Pregunta: ¿Es legal leer imágenes y descripciones de otro sitio web y ponerlas en mi programa? Supongamos que quiero hacer una aplicación como la de ebay, ...
Problema con consulta JPQL + JPA + JSF + EJB – java jsf jpa
Pregunta: @Override public Usuario iniciarSesion(Usuario us){ Usuario usuario = null; String consulta; try { ...
No encuentra el audio dentro de src – java
Pregunta: Tengo una carpeta "audios" dentro de "src", para cuando construya el proyecto pueda reproducir los audios. Intento abrir el audio pero me salta "java.lang.NullPointerException" ...
¿Como saber con Apache POI y java si una columna en excel esta oculta? – java apache-poi
Pregunta: Hola estoy importando archivos excel con extensión xls y xlsx pero mi duda es como poder detectar si la columna de una celda esta ...
Spinner y EditText – java android
Pregunta: Tengo este código para cargar un spinner con datos de una base de datos: private class Getfrutas extends AsyncTask<Void, Void, Void> { ...
¿Cómo enviar datos de una pagina JSP a un Servlet sin un form? – java jsp java-ee
Pregunta: Tengo un problema. No logro recibir un valor por GET en el Servlet, no se por qué. Aquí el código JSP: <html> ...
Ayuda con un Calendario en Linea de Codigo – java
Pregunta: Pues se supone que mi código debería imprimir en algunos meses 31 días según una de mis condiciones pero no lo hace de hecho ...
¿ Por qué se me detiene la aplicación al usar este pequeño código? – java android bottombar
Pregunta: Tengo un bottomBar donde tengo 5 opciones, la última es la del mapa de google API. Mi problema es que al hacer click en ...
Exception java.lang.NumberFormatException al intentar un “.size” dentro de una EL – java jsp jboss
Pregunta: Estoy teniendo una Exception en el siguiente código dentro de un jsp: <c:if test="${usuarios.size gt 10}"> usuarios es un ArrayList que objetos. usuarios no esta vacío ya ...
¿ Cómo implemento este código para android 6.0? – java android
Pregunta: Tengo en un Fragment implementado el Google API y FUNCIONA. Pero funciona en mis 3 móviles que son jellybean, kitkat y lollipop. El ...
Algoritmo de Bresenham, duda con la codificación de los 8 octantes – java matemáticas
Pregunta: En la imagen de arriba muestra todos los cuadrantes de la pantalla: Este algoritmo sirve para el movimiento natural de la pelota, usado en juegos ...
¿Cómo guardar un ImageView en Android? – java android
Pregunta: Mi aplicación está compuesta por un botón y un ImageView y cuando se aprieta el botón la ImageView recibe una imagen que tengo en ...

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *