Encadenamiento y Relanzamiento de Excepciones
Desliza para mostrar el menú
Al manejar errores en Python, puedes encontrarte con una situación en la que al capturar una excepción necesitas lanzar una excepción diferente. En estos casos, es importante preservar el contexto del error original. El encadenamiento de excepciones en Python permite hacer esto utilizando la palabra clave from. Al encadenar excepciones explícitamente, proporcionas trazas de error más detalladas, lo que facilita comprender la secuencia de errores que llevó a una falla.
Supón que estás escribiendo una función que procesa la entrada de un archivo. Si ocurre un error al leer el archivo, puedes querer lanzar una excepción personalizada que se ajuste mejor a la lógica de tu aplicación, pero también deseas conservar la información sobre el error original. Usar raise NewException() from original_exception te permite hacer precisamente eso.
La relanzamiento de excepciones es otra técnica relacionada. A veces, después de capturar una excepción, puedes querer realizar alguna limpieza o registrar información, y luego dejar que la excepción se propague. Puedes hacerlo simplemente usando raise sin especificar una excepción, lo que relanza la última excepción capturada. Tanto el encadenamiento como el relanzamiento de excepciones son útiles para escribir código robusto y fácil de depurar.
12345678910111213141516# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise
Este código demuestra el encadenamiento simple de excepciones y el relanzamiento en Python. La función divide intenta dividir dos números y captura un ZeroDivisionError, encadenándolo a un nuevo ValueError con un mensaje claro. El bloque externo try-except captura el ValueError, imprime la traza completa mostrando ambas excepciones y luego relanza la excepción para propagarla más allá.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla