2 usuarios conectados
Manejo de excepciones en Python. Try, Except, Finally
Manejo de excepciones en Python. Try, Except, Finally
Ahora vamos a abordar un
aspecto crucial de la programación robusta: el manejo de excepciones
en Python, utilizando las sentencias try
, except
,
y finally
. El manejo de excepciones te permite controlar los
errores que pueden ocurrir durante la ejecución de tu programa, evitando que se
detenga abruptamente y proporcionando una forma de recuperarse o de realizar
acciones de limpieza.
¿Qué es una Excepción?
Una excepción es un evento que ocurre durante la
ejecución de un programa que interrumpe el flujo normal de las instrucciones.
Pueden ser causadas por una variedad de razones, como errores de entrada/salida,
errores de lógica, o problemas con los recursos del sistema.
Las Sentencias try
y
except
:
El bloque try
te permite
envolver un fragmento de código donde crees que podría ocurrir una excepción. Si
ocurre una excepción dentro del bloque try
, la ejecución
normal se detiene y Python busca un bloque except
que pueda
manejar esa excepción específica.
La sintaxis básica es:
try:
: Define
el bloque de código que se va a supervisar en busca de excepciones.
except TipoDeExcepcion:
:
Define un bloque de código que se ejecutará solo si ocurre una excepción del
tipo TipoDeExcepcion
dentro del bloque try
.
Puedes tener múltiples bloques except
para manejar
diferentes tipos de excepciones.
Ejemplos:
-
Manejo de ZeroDivisionError
:
Salida:
En este caso, intentar dividir por cero
genera una excepción ZeroDivisionError
. El bloque
try
detecta esta excepción, y el flujo del programa salta
al bloque except ZeroDivisionError
, que imprime un
mensaje de error. El programa no se detiene.
-
Manejo de ValueError
:
Si el usuario ingresa algo que no se puede
convertir a un entero (por ejemplo, "abc"), la función int()
generará un ValueError
, y se ejecutará el bloque
except ValueError
.
-
Múltiples bloques except
:
Aquí, se manejan tres tipos diferentes de
excepciones que podrían ocurrir dentro del bloque try
.
La Sentencia else
(opcional):
Puedes incluir un bloque else
después de los bloques except
. El bloque else
se ejecutará solo si no se produjo ninguna excepción en el
bloque try
.
En este ejemplo, el bloque else
solo se ejecuta si la conversión a entero en el bloque try
fue exitosa (es decir, no se generó ValueError
).
La Sentencia finally
(opcional):
El bloque finally
se utiliza
para definir un bloque de código que siempre se ejecutará,
independientemente de si ocurrió una excepción en el bloque try
o no, y de si se manejó o no. Es comúnmente utilizado para realizar acciones de
limpieza, como cerrar archivos o liberar recursos.
En este caso, el bloque finally
asegura que el archivo se cierre si fue abierto, incluso si ocurre una
FileNotFoundError
o cualquier otra excepción durante la
lectura.
Captura de Múltiples Excepciones en un
Solo Bloque except
:
Puedes capturar múltiples tipos de excepciones
en un solo bloque except
utilizando una tupla de los tipos de
excepción:
Captura de Cualquier Excepción:
Si quieres capturar
cualquier tipo de excepción (generalmente no se recomienda porque puede ocultar
errores inesperados), puedes usar un bloque except
sin especificar el tipo de excepción:
Levantamiento de Excepciones (raise
):
En
ocasiones, puede que necesites levantar una excepción explícitamente en tu
código. Esto se hace con la sentencia raise
:
Aquí, si la edad es negativa, se levanta una excepción
ValueError
con un mensaje descriptivo. El bloque
except
la captura y la maneja.
El manejo de excepciones es fundamental para
escribir código robusto y tolerante a errores. Te permite anticipar problemas
potenciales y proporcionar una forma controlada de lidiar con ellos, mejorando
la experiencia del usuario y la estabilidad de tus programas. ¿Te gustaría que
pasemos al siguiente tema?