WhatsApp

  
Manejo de excepciones en Python

Manejo de excepciones en Python

En Python, las excepciones son errores que ocurren durante la ejecución de un programa. Estos errores pueden ser causados por diferentes razones, como una entrada incorrecta de datos o un problema en el código.

El manejo de excepciones nos permite controlar estos errores y evitar que nuestro programa se detenga abruptamente. Esto es especialmente útil cuando estamos interactuando con el usuario o trabajando con archivos.

Ejercicio 1: Manejo de excepciones personalizadas

Una característica poderosa de Python es la capacidad de crear nuestras propias excepciones personalizadas. Esto nos permite definir nuestros propios errores y controlarlos de manera específica.

Por ejemplo, supongamos que estamos desarrollando un programa para hacer cálculos matemáticos y queremos asegurarnos de que no se realicen divisiones por cero. Podemos crear una excepción personalizada llamada "DivisionPorCeroError" y lanzarla cuando sea necesario.


class DivisionPorCeroError(Exception):
    pass
def dividir(a, b):
    if b == 0:
        raise DivisionPorCeroError("División por cero no está permitida")
    return a / b

Ejercicio 2: Escenarios donde es importante manejar errores con excepciones

Existen varios escenarios en los que es importante manejar errores con excepciones en Python:

  • Cuando estamos leyendo o escribiendo archivos: si no se encuentra un archivo o hay un problema al leer/escribir los datos, el programa podría terminar abruptamente. Usando el manejo de excepciones, podemos capturar estos errores y tomar acciones adecuadas.
  • Cuando estamos interactuando con el usuario: si esperamos una entrada numérica y el usuario ingresa un valor no válido, podemos mostrar un mensaje de error en lugar de que el programa se cierre inesperadamente.
  • Cuando estamos realizando operaciones matemáticas: como en el primer ejercicio, es importante manejar errores como divisiones por cero para evitar resultados incorrectos o interrupciones.

Ejercicio 3: Funcionalidad de múltiples catch y finally

En Python, podemos utilizar múltiples bloques except para capturar diferentes tipos de excepciones. Esto nos permite manejar errores de manera específica según el tipo de excepción que se produzca.

Además, tenemos la opción de agregar un bloque finally, el cual se ejecutará siempre, independientemente de si se produce o no una excepción. Esto es útil para tareas de limpieza o liberación de recursos.


try:
    # Código que puede causar una excepción
except TipoDeExcepcion1:
    # Manejo para TipoDeExcepcion1
except TipoDeExcepcion2:
    # Manejo para TipoDeExcepcion2
except:
    # Manejo para cualquier otra excepción
finally:
    # Código que siempre se ejecuta, independientemente de si se produce una excepción o no

Pruebas unitarias y mejores prácticas

Un aspecto importante del manejo de excepciones es realizar pruebas unitarias para asegurarnos de que el código se comporte de manera esperada en diferentes situaciones.

Podemos crear casos de prueba que simulen diferentes escenarios, como entradas válidas e inválidas, y verificar que se manejen correctamente las excepciones.

Además, es recomendable seguir algunas mejores prácticas al manejar excepciones:

  • Ser específico en el manejo de excepciones: capturar excepciones demasiado genéricas puede ocultar errores o dificultar su depuración. Es mejor capturar solo las excepciones que esperamos y manejarlas de manera adecuada.
  • Proporcionar mensajes de error claros: al lanzar excepciones personalizadas o al manejar excepciones existentes, es importante proporcionar mensajes de error claros y descriptivos para facilitar la resolución de problemas.
  • Evitar trampas silenciosas: tratar de capturar excepciones específicas y continuar sin manejarlas correctamente puede llevar a resultados inesperados. Es mejor abordar las excepciones de manera adecuada o permitir que se propaguen si no sabemos cómo manejarlas.

Generar una excepción personalizada

Para generar una excepción personalizada, podemos crear una clase que herede de la clase base Exception o de una de las clases existentes en Python.


class MiExcepcionPersonalizada(Exception):
    pass
# Lanzar la excepción personalizada
raise MiExcepcionPersonalizada("Mensaje de error")

Podemos agregar información adicional a la excepción personalizada proporcionando argumentos al momento de lanzarla. Esto nos permite pasar información relevante para la captura y el manejo posterior de la excepción.


class MiExcepcionPersonalizada(Exception):
    def __init__(self, mensaje, codigo):
        super().__init__(mensaje)
        self.codigo = codigo
# Lanzar la excepción personalizada con información adicional
raise MiExcepcionPersonalizada("Mensaje de error", 123)

En resumen, el manejo de excepciones en Python nos permite controlar y manejar errores de manera específica, evitando así la terminación abrupta de nuestro programa. También podemos crear nuestras propias excepciones personalizadas para casos particulares. Es importante realizar pruebas unitarias y seguir mejores prácticas al manejar excepciones.

.

Ejemplo de excepción al no encontrar un archivo

Una situación común al trabajar con archivos es cuando intentamos abrir un archivo que no existe. Si intentamos abrir un archivo inexistente sin manejar una excepción, el programa lanzará una excepción de tipo FileNotFoundError. Podemos utilizar un bloque try-except para capturar esta excepción y manejarla de manera adecuada.


    try:
        # Intentar abrir un archivo
        file = open('archivo.txt', 'r')
        # Realizar operaciones con el archivo
        file.read()
        file.close()
    except FileNotFoundError:
        # Manejar la excepción de archivo no encontrado
        print('El archivo no pudo ser encontrado.')
  

En este ejemplo, intentamos abrir un archivo llamado "archivo.txt" en modo de lectura. Si el archivo no existe, se lanzará una excepción de tipo FileNotFoundError y será capturada por el bloque except. En el bloque except, podemos escribir el código necesario para manejar la excepción, como mostrar un mensaje de error al usuario

en IA
Manejo de excepciones en Python
ASIMOV Ingeniería S. de R.L. de C.V., Emiliano Nava 26 octubre, 2023
Compartir
Categorías


Iniciar sesión dejar un comentario

  
Módulos y Bibliotecas