Qué es una excepción en Python
Una excepción es una señal de que una operación no pudo realizarse.
Definición
Cuando Python no puede completar una operación, por ejemplo convertir "doce" en un entero, lanza una excepción y detiene ese camino. Con try pruebas la operación y con except eliges qué hacer si falla.
Conviene capturar el tipo concreto, como ValueError, y no uno demasiado amplio, que podría esconder otros problemas. Con raise lanzas tú una excepción cuando una regla no se cumple.
Ejemplo
def convertir(texto):
try:
return int(texto)
except ValueError:
return "Número no válido"
print(convertir("12"))
print(convertir("doce"))Al ejecutarlo, Python muestra:
12 Número no válido
Puedes copiar el ejemplo y cambiarlo en el editor Python del navegador: modificar un valor y predecir el resultado es la mejor forma de fijar el concepto.
Error frecuente
Un except Exception demasiado amplio puede ocultar errores de programación, como un nombre mal escrito. Captura solo el fallo que sabes manejar.
Cómo se diferencia de otros conceptos
No todo error es una excepción que debas capturar. Un SyntaxError impide ejecutar el programa y se corrige en el código; una excepción como ValueError aparece al ejecutar y puede manejarse. Y raise sirve en el sentido contrario: lanzas tú la excepción cuando una regla de tu programa no se cumple.
Preguntas frecuentes
¿Qué diferencia hay entre try/except y if?
Con if compruebas una condición antes de actuar; con try pruebas la operación y respondes si falla. Elige if cuando puedas anticipar el caso y try cuando el fallo dependa de algo externo.
¿Debo usar except Exception?
Casi nunca. Captura el tipo concreto que sabes manejar; uno demasiado amplio puede ocultar errores de programación.