Saltar al contenido
Introducción a la programación con Python

Manejo de excepciones y errores.

Introducción

Cuando escribimos un programa, es común que este pueda fallar debido a errores en la lógica o en la sintaxis. Si bien es importante escribir correctamente el código, es inevitable que algunas veces tengamos que lidiar con errores. Para manejar estas situaciones, Python cuenta con el manejo de excepciones.

Una excepción es un evento que ocurre durante la ejecución del programa y que interrumpe su flujo normal. Cuando ocurre una excepción, el programa se detiene y se genera un mensaje de error que indica el tipo de excepción y la línea de código que la causó.

Para manejar estas excepciones, se utiliza la estructura try-except. Con esta estructura, se intenta ejecutar un bloque de código dentro del try. Si ocurre una excepción dentro del bloque try, se detiene la ejecución del programa y se ejecuta el bloque except que corresponde a esa excepción en particular.

De esta manera, podemos manejar los errores de una manera controlada y evitar que el programa se cierre abruptamente. Es importante destacar que el manejo de excepciones no solo nos permite controlar errores, sino también nos permite tomar decisiones en función de las excepciones que se generen. Por ejemplo, si una excepción indica que un archivo no existe, podemos crearlo automáticamente antes de continuar con la ejecución del programa.

Resumen

El manejo de excepciones y errores en Python es una técnica fundamental en la programación que te ayudará a detectar y manejar situaciones inesperadas o imprevistas en la ejecución de tu código.

En Python, una excepción es un evento que interrumpe el flujo normal de ejecución de un programa y puede ser provocada por diversos factores, como una entrada de datos incorrecta, una operación matemática inválida o la falta de un archivo. Cuando se produce una excepción, Python genera un objeto que contiene información sobre el tipo de error ocurrido, su ubicación en el código y la pila de llamadas que lo condujeron.

Para manejar las excepciones en Python, debes utilizar un bloque `try-except`. El bloque `try` se utiliza para encapsular el código que puede producir una excepción. Si se produce una excepción dentro del bloque `try`, el programa busca uno o varios bloques `except` que coincidan con el tipo de excepción generada. Si se encuentra un bloque `except` adecuado, el código dentro de ese bloque se ejecuta. De lo contrario, el programa se interrumpe y se muestra un mensaje de error.

Un ejemplo básico de cómo manejar una excepción en Python:


try:
    x = int(input("Introduce un número: "))
    y = 100 / x
except ZeroDivisionError:
    print("No se puede dividir entre cero.")
except ValueError:
    print("Se esperaba un número entero válido.")
else:
    print("El resultado de la división es:", y)
finally:
    print("Se ha completado el proceso.")

En este ejemplo, el bloque `try` encapsula la entrada de datos y la división. Si el usuario introduce una cadena de texto o el número cero, se producirá una excepción `ValueError` o `ZeroDivisionError`, respectivamente. En ambos casos, se utiliza un bloque `except` para mostrar un mensaje de error. Si la división es exitosa, el mensaje con el resultado se mostrará en el bloque `else`.

Por último, el bloque `finally` se ejecutará siempre, independientemente de si se produjo o no una excepción. En resumen, el manejo de excepciones y errores en Python es una herramienta que te permitirá mejorar la calidad y robustez de tus programas, al identificar y tratar de forma adecuada situaciones inesperadas en la ejecución de tu código.

Aplicación teórica

Supongamos que estás desarrollando un programa que solicita al usuario que ingrese un número entero y luego lo divide por otro número que también es ingresado por el usuario. Si el segundo número es cero, o si el usuario ingresa una letra en lugar de un número, tu programa arrojará un error.

Para manejar este tipo de situaciones, se utilizan excepciones y manejo de errores. Un ejemplo de cómo podrías implementar el manejo de errores y excepciones en este tipo de programa:


while True:
    try:
        num1 = int(input("Ingrese un número: "))
        num2 = int(input("Ingrese otro número: "))
        resultado = num1 / num2
        print("El resultado de la división es:", resultado)
        break
    except ValueError:
        print("Por favor, ingrese solo números enteros.")
    except ZeroDivisionError:
        print("No se puede dividir por cero. Por favor, ingrese otro número diferente de cero.")

En este ejemplo, el programa solicita al usuario que ingrese dos números enteros. Si el usuario ingresa una letra en lugar de un número, se lanzará una excepción de `ValueError`, y el programa imprimirá `"Ingrese solo numeros enteros"`. Si el usuario ingresa cero como el segundo número, se lanzará una excepción de `ZeroDivisionError`, y el programa imprimirá `"No se puede dividir por cero"`.

En ambos casos, el programa seguirá ejecutándose y solicitará al usuario volver a ingresar los números hasta que ingrese números válidos.

Aplicación práctica

Supongamos que tenemos una función que toma dos números como entrada y realiza una operación matemática compleja. Sin embargo, si el segundo número es cero, esta operación no puede realizarse y se producirá un error.

Para manejar este tipo de error en Python, se puede utilizar una excepción try-except. El bloque try contiene el código que puede generar un error y el bloque except conduce cualquier excepción que ocurra.

Entonces, si hay un error en el bloque try, en lugar de romper el programa, Python ejecutará el bloque except y proporcionará un mensaje de error personalizado.

Aquí está el código:


def operacion(a, b):
    try:
        resultado = a / b
        print("El resultado es:", resultado)
    except ZeroDivisionError:
        print("Lo siento, no se puede dividir por cero.")

# Ejecución de la función con valores que generan una excepción
operacion(10, 0)

# Ejecución de la función con valores que no generan una excepción
operacion(10, 2)

En este ejemplo, si ejecutamos la función `operacion(10,0)`, Python ejecutará automáticamente el bloque except y mostrará el mensaje "Lo siento, no se puede dividir por cero.". Y si ejecutamos la función `operacion(10,2)`, se calculará correctamente el resultado y se imprimirá "El resultado es: 5.0".

Este es solo un ejemplo simple de cómo usar excepciones y manejo de errores en Python. En casos más complejos, se pueden manejar múltiples excepciones, tener bloqueos anidados try-except y personalizar los mensajes de error para brindar una experiencia de usuario más amigable.