Manejo de Excepciones (try/except)
Cuando algo sale mal — dividir por cero, convertir texto que en realidad no es un número — Python lanza una excepción. Si no se captura, eso hace que tu programa se caiga. try/except te permite capturarla y decidir qué pasa en su lugar.
try:
result = 10 / 0
except ZeroDivisionError:
print("You cannot divide by zero!")You cannot divide by zero!
Python intenta ejecutar el código dentro de try. En el momento en que ocurre un ZeroDivisionError, salta directamente al bloque except correspondiente en vez de caerse — el programa sigue ejecutándose con normalidad después de eso.
Capturar el error real, y finally
except SomeError as e te permite acceder al objeto del error real — útil para registrar logs o mostrar un mensaje real en vez de uno genérico. finally se ejecuta pase lo que pase — se haya lanzado una excepción o no — lo que lo convierte en el lugar adecuado para el código de limpieza.
try:
number = int("not a number")
except ValueError as e:
print(f"Error: {e}")
finally:
print("This always runs")Error: invalid literal for int() with base 10: 'not a number' This always runs
Captura tipos de excepción específicos (ZeroDivisionError, ValueError) en vez de un except desnudo — así un error genuinamente inesperado no se traga en silencio junto con el error que realmente esperabas.
Siguiente: clases — agrupar datos junto con las funciones que trabajan sobre ellos.
Ejercicio de práctica
Intenta convertir el string "abc" a un int, captura el ValueError, e imprime "Not a number" en vez de que se caiga.