Utilizando una construcción try-catch-finally para recuperar un registro de base de datos, parece que necesito devolver un valor dentro de un bloque try
en caso de que todo esté bien (como en el caso de una excepción, el fin de la función no ser alcanzado). Pero si regreso dentro de try
, ¿se va a llegar al código finally
(para cerrar la conexión, etc.)?¿Se ejecuta `finally` block en caso de que haya` return` dentro de un `try` o un` catch` block?
Respuesta
Sí,
El resultado de la expresión try/catch
será la última línea de ya sea el bloque try
o catch
, pero el bloque finally
siempre se ejecutará sin importar lo
Sí.
El objetivo de un finally
es garantizar que se ejecute algún código de limpieza sin importar la ruta que use el código para salir del bloque try
. Sucede en el retorno ordinario, cuando se lanza y atrapa una excepción, y cuando se lanza una excepción que no está atrapada en este bloque try
. Lo único que evitará que se ejecute es si el programa no puede abandonar el bloque try
; un bucle infinito dentro de él, o el proceso que se está matando por algún medio que impide que ocurra este procesamiento normal, o algo de ese orden. Estoy bastante seguro de que incluso si sale del proceso desde el interior del bloque try
, se ejecutará el bloque finally
antes de que el proceso realmente muera.
- 1. try/catch block en Arduino
- 2. @try - catch block en Objective-c
- 3. java try finally block to close stream
- 4. ¿Qué es mejor usar, un bloque __try/__ except block o un try/catch block?
- 5. Benchmark de Java Try/Catch Block
- 6. Lanzar excepciones en un PHP Try Catch block
- 7. Javascript: try/catch/finally return statement
- 8. Python Prueba Catch Block dentro de lambda
- 9. ¿Hay tal caso cuando en try \ finally block no se ejecutará finalmente?
- 10. Estilo de código Java para secuencia abierta try/finally block
- 11. MySQL PDO: ¿qué debería estar dentro de try {block}?
- 12. Powershell try/catch/finally
- 13. try catch in finally section
- 14. Java Try Catch Finally blocks without Catch
- 15. Varias pruebas en Try/Except Block
- 16. Delphi - try finally block está garantizado por el compilador para ser ejecutado correctamente?
- 17. ¿por qué no es posible insertar código entre try y catch block?
- 18. try-catch-finally modismo en smalltalk
- 19. ¿Necesito rodear fileInputStream.close con un bloque try/catch/finally? ¿Cómo se hace?
- 20. Utilice un bloque 'try-finally' sin un bloque 'catch'
- 21. ¿Cuándo es un try catch no un try catch?
- 22. ¿El bloque C# "finally" SIEMPRE se ejecuta?
- 23. ¿Tiene sentido hacer "try-finally" sin "catch"?
- 24. Finalmente está "fuera del alcance" en un bloque try/catch
- 25. ¿Parallel.ForEach Block?
- 26. java: cómo declarar final una variable que se inicializa dentro de un bloque try - catch?
- 27. ¿Cómo manejar las excepciones no detectadas en javascript sin try/catch-block?
- 28. que es más rápido - Un bloque Usar o try/catch/finally
- 29. Formateo de difícil de leer try..catch..finally blocks?
- 30. BadPaddingException: pad block corrupto
Incluso si hay una declaración 'return' explícita en el bloque' try'? – Rogach
sí. [Y estos otros caracteres para ajustar la longitud mínima] –
El único caso en el que el bloque 'finally' no se ejecuta es cuando' sys.exit() 'se llama dentro del bloque' try' o 'catch'. – axel22