2011-10-19 14 views

Respuesta

6

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

+0

Incluso si hay una declaración 'return' explícita en el bloque' try'? – Rogach

+2

sí. [Y estos otros caracteres para ajustar la longitud mínima] –

+2

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

1

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.

Cuestiones relacionadas