InicioEjecutar códigoen bloque try¿Ocurreexcepción?¿Hay manejadorpara esta excepción?Ejecutar bloqueexcept correspondienteEjecutar bloqueelse (si existe)Ejecutar bloquefinally (si existe)Propagar excepciónal nivel superiorFin
try:
# Código que puede generar excepciones
numero = int(input("Ingrese un número: "))
resultado = 10 / numero
print(f"El resultado es: {resultado}")
except ValueError:
# Se ejecuta si ocurre ValueError
print("Error: Debe ingresar un número válido")
except ZeroDivisionError:
# Se ejecuta si ocurre ZeroDivisionError
print("Error: No se puede dividir por cero")
except Exception as e:
# Se ejecuta para otras excepciones
print(f"Error inesperado: {e}")
else:
# Se ejecuta si no ocurre ninguna excepción
print("Operación completada con éxito")
finally:
# Se ejecuta siempre, haya o no excepciones
print("Proceso finalizado")
class ErrorDatoInvalido(Exception):
"""Excepción para datos que no cumplen con los requisitos."""
def __init__(self, valor, mensaje="Valor no válido"):
self.valor = valor
self.mensaje = mensaje
super().__init__(f"{mensaje}: {valor}")
def __str__(self):
return f"{self.mensaje}: {self.valor}"
def validar_edad(edad):
if not isinstance(edad, int):
raise ErrorDatoInvalido(edad, "La edad debe ser un número entero")
if edad < 0 or edad > 120:
raise ErrorDatoInvalido(edad, "La edad debe estar entre 0 y 120")
return True
try:
validar_edad("veinticinco")
except ErrorDatoInvalido as e:
print(f"Error: {e}")
Herencia de ExcepcionesExceptionErrorAplicacionErrorValidacionErrorDatoInvalidoErrorConexionOrganizaciónjerárquica
try:
valor = diccionario["clave"]
resultado = 10 / valor
except KeyError:
print("La clave no existe")
except ZeroDivisionError:
print("No se puede dividir por cero")
if "clave" in diccionario:
valor = diccionario["clave"]
if valor != 0:
resultado = 10 / valor
else:
print("No se puede dividir por cero")
else:
print("La clave no existe")
Estos diagramas te ayudarán a visualizar cómo funciona el manejo de errores en Python, facilitando su comprensión y uso efectivo en tus programas.