Requisitos previos: manejo de excepciones , probar y excepto en Python
En programación, puede haber alguna situación en la que el método actual termine mientras maneja algunas excepciones. Pero el método puede requerir algunos pasos adicionales antes de su finalización, como cerrar un archivo o una red, etc.
Entonces, para manejar estas situaciones, Python proporciona una palabra clave finally
, que siempre se ejecuta después try
yexcept
bloquea. El finally
bloque siempre se ejecuta después de la finalización normal del bloque de prueba o después de que finaliza el bloque de prueba debido a alguna excepción.
Sintaxis:
try: # Some Code.... except: # optional block # Handling of exception (if required) finally: # Some code .....(always executed)
Puntos importantes –
- finalmente el bloque siempre se ejecuta después de salir de la declaración de prueba . En caso de que el bloque de excepción no haya manejado alguna excepción, se vuelve a generar después de la ejecución del bloque finalmente.
- finalmente bloque se utiliza para desasignar los recursos del sistema.
- Uno puede usar finalmente justo después de intentarlo sin usar el bloque excepto , pero en ese caso no se maneja ninguna excepción.
Ejemplo 1:
# Python program to demonstrate finally # No exception Exception raised in try block try: k = 5//0 # raises divide by zero exception. print(k) # handles zerodivision exception except ZeroDivisionError: print("Can't divide by zero") finally: # this block is always executed # regardless of exception generation. print('This is always executed')
Producción:
Can't divide by zero This is always executed
Ejemplo #2:
# Python program to demonstrate finally try: k = 5//1 # No exception raised print(k) # intends to handle zerodivision exception except ZeroDivisionError: print("Can't divide by zero") finally: # this block is always executed # regardless of exception generation. print('This is always executed')
Producción:
5 This is always executed
Ejemplo #3:
# Python program to demonstrate finally # Exception is not handled try: k = 5//0 # exception raised print(k) finally: # this block is always executed # regardless of exception generation. print('This is always executed')
Producción:
This is always executed
Error de tiempo de ejecución –
Unhandled Exception k=5//0 #No exception raised ZeroDivisionError: integer division or modulo by zero
Explicación:
en el código anterior, la excepción se genera con una división entera o módulo por cero , que no se manejó. La excepción se volvió a generar después de la ejecución del bloque finalmente . Esto muestra que el bloque finalmente se ejecuta independientemente de si la excepción se maneja o no.
Publicación traducida automáticamente
Artículo escrito por deepak_jain y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA