Manejo de Errores y Excepciones

Errores y Excepciones

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.

Código de Ejemplo

				
					# 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}")

				
			

Explicación

Manejo Básico de Excepciones

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.

Manejo de Múltiples Excepciones

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.

Captura de Excepción General

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.

Lanzar Excepciones

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.

Excepciones Personalizadas

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.

Resumen

  • try-except: Permite capturar y manejar excepciones de manera controlada.
  • finally: Contiene código que se ejecuta siempre, ocurra o no una excepción.
  • Múltiples except: Permiten manejar diferentes tipos de excepciones.
  • Captura de Excepción General: Utiliza except Exception as e para capturar cualquier tipo de excepción.
  • Lanzar Excepciones: Utiliza raise para generar excepciones intencionalmente.
  • Excepciones Personalizadas: Crea excepciones específicas para tu aplicación heredando de Exception.