Skip to main content

try y except en Python

En Python, try y except son bloques de código utilizados para manejar excepciones y gestionar errores de manera controlada. El manejo de excepciones es una práctica fundamental para escribir código robusto y resistente a fallos. El bloque try permite ejecutar un conjunto de instrucciones, mientras que el bloque except se encarga de manejar las excepciones que puedan surgir durante la ejecución del código en el bloque try.

1. Estructura Básica de try y except

try:
# Bloque de código que puede generar una excepción
# ...
except ExcepcionTipo as nombre_excepcion:
# Código para manejar la excepción
# ...
except OtraExcepcionTipo as otra_excepcion:
# Código para manejar otra excepción
# ...
else:
# Bloque de código que se ejecuta si no se producen excepciones en el bloque try
# ...
finally:
# Bloque de código que se ejecuta siempre, haya o no haya excepciones
# ...
  • try: Contiene el bloque de código que puede generar excepciones. Si se produce alguna excepción, la ejecución se transfiere al bloque except.

  • except ExcepcionTipo as nombre_excepcion: Captura y maneja excepciones del tipo especificado (ExcepcionTipo). Se puede utilizar as para asignar un nombre a la excepción capturada para su posterior referencia.

  • else: Opcional. Contiene un bloque de código que se ejecuta si no se produce ninguna excepción en el bloque try.

  • finally: Opcional. Contiene un bloque de código que se ejecuta siempre, independientemente de si se produjo una excepción o no en el bloque try.

2. Tipos Comunes de Excepciones

Algunos tipos comunes de excepciones incluyen:

  • ZeroDivisionError: Ocurre cuando se intenta dividir por cero.

  • FileNotFoundError: Ocurre cuando se intenta acceder a un archivo que no existe.

  • TypeError: Ocurre cuando se realiza una operación no permitida para el tipo de datos.

  • ValueError: Ocurre cuando una función recibe un argumento del tipo correcto pero con un valor incorrecto.

3. Ejemplos de Uso

a. Manejo de ZeroDivisionError

try:
resultado = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")

b. Manejo de FileNotFoundError

try:
with open('archivo_no_existente.txt', 'r') as archivo:
contenido = archivo.read()
except FileNotFoundError as e:
print(f"Error: {e}")

c. Manejo de TypeError

try:
resultado = "10" + 5
except TypeError as e:
print(f"Error: {e}")

d. Uso de else y finally

try:
resultado = 10 / 2
except ZeroDivisionError as e:
print(f"Error: {e}")
else:
print(f"Resultado: {resultado}")
finally:
print("Este bloque se ejecuta siempre.")

4. Excepciones Personalizadas

Es posible crear excepciones personalizadas mediante la definición de clases que hereden de la clase base Exception. Estas excepciones pueden ser levantadas (raise) en situaciones específicas dentro del código.

class MiErrorPersonalizado(Exception):
def __init__(self, mensaje):
super().__init__(mensaje)

try:
raise MiErrorPersonalizado("Este es un mensaje personalizado.")
except MiErrorPersonalizado as e:
print(f"Error personalizado: {e}")

5. Conclusiones

El manejo de excepciones con try y except es esencial para escribir código robusto y manejar situaciones imprevistas. La capacidad de personalizar excepciones y utilizar else y finally proporciona flexibilidad en la gestión de errores en Python. Es recomendable utilizar el manejo de excepciones de manera selectiva y específica para cada tipo de situación.