En Python, los errores y las excepciones son mecanismos que permiten manejar situaciones inesperadas o excepcionales que pueden ocurrir durante la ejecución de un programa. Las excepciones permiten capturar y manejar estos errores de manera controlada, evitando que el programa se detenga abruptamente.
# Manejo básico de excepciones
try:
# Código que puede generar una excepción
resultado = 10 / 0
except ZeroDivisionError:
# Código que se ejecuta si se produce una excepción
print("Error: División por cero.")
finally:
# Código que se ejecuta siempre, ocurra o no una excepción
print("Finalizando el bloque try-except.")
# Manejo de múltiples excepciones
try:
valor = int("hola")
except ValueError:
print("Error: Valor no válido.")
except TypeError:
print("Error: Tipo no válido.")
finally:
print("Finalizando el bloque try-except.")
# Captura de excepción general
try:
lista = [1, 2, 3]
print(lista[5])
except Exception as e:
print(f"Se ha producido un error: {e}")
# Lanzar excepciones
def verificar_edad(edad):
if edad < 18:
raise ValueError("La edad debe ser mayor o igual a 18.")
return "Edad válida."
try:
print(verificar_edad(15))
except ValueError as e:
print(f"Error: {e}")
# Excepciones personalizadas
class ErrorPersonalizado(Exception):
pass
def funcion_con_error():
raise ErrorPersonalizado("Se ha producido un error personalizado.")
try:
funcion_con_error()
except ErrorPersonalizado as e:
print(f"Excepción capturada: {e}")
El bloque try-except
permite capturar y manejar excepciones. El código que puede generar una excepción se coloca dentro del bloque try
. Si se produce una excepción, se ejecuta el bloque except
correspondiente.
try
: Contiene el código que puede generar una excepción.except
: Contiene el código que se ejecuta si se produce una excepción.finally
: Contiene el código que se ejecuta siempre, ocurra o no una excepción.En el primer ejemplo, el intento de dividir por cero genera un ZeroDivisionError
, que se captura y maneja en el bloque except
.
Puedes manejar diferentes tipos de excepciones utilizando múltiples bloques except
. Cada bloque except
maneja un tipo específico de excepción.
En el segundo ejemplo, se manejan tanto ValueError
como TypeError
por separado.
Puedes capturar cualquier tipo de excepción utilizando except Exception as e
, donde e
es la excepción capturada. Esto es útil para manejar errores inesperados de manera general.
En el tercer ejemplo, el intento de acceder a un índice fuera de los límites de una lista genera una excepción, que se captura y maneja.
Puedes lanzar excepciones utilizando la palabra clave raise
. Esto permite generar excepciones de manera intencional.
En el cuarto ejemplo, se lanza un ValueError
si la edad es menor de 18, que se captura y maneja en el bloque try-except
.
Puedes definir tus propias excepciones personalizadas creando una nueva clase que herede de Exception
. Esto es útil para manejar situaciones específicas en tu aplicación.
En el último ejemplo, se define una excepción personalizada ErrorPersonalizado
y se lanza en una función. Luego, se captura y maneja en el bloque try-except
.
try-except
: Permite capturar y manejar excepciones de manera controlada.finally
: Contiene código que se ejecuta siempre, ocurra o no una excepción.except
: Permiten manejar diferentes tipos de excepciones.except Exception as e
para capturar cualquier tipo de excepción.raise
para generar excepciones intencionalmente.Exception
.