Levantamiento de excepciones en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Bienvenido a la Academia Arcano de Codificación Exceptional, una prestigiosa institución donde solo los más habilidosos magos codificadores se reúnen para afilar sus habilidades. Eres un joven mago que recientemente se ha unido a la academia y al mundo siempre desafiante de los algoritmos mágicos y las complejas incantaciones.

Tu viaje comienza bajo la guía del Maestro Pytho, un renombrado entrenador de hechizos competitivos conocido en todos los reinos mágicos por sus excepcionales habilidades para resolver problemas y su vasto conocimiento de la hechicería Python. En la academia, todo mago debe aprender el arte de lanzar hechizos, pero lo que hace a un mago verdaderamente poderoso es la capacidad de anticiparse y manejar lo inesperado.

Hoy, el Maestro Pytho te enseñará el arte antiguo de Levantar Excepciones, una habilidad fundamental para cualquier mago aspirante que le permite controlar el flujo de la magia (código) y crear sistemas de seguridad ante errores imprevistos que pueden surgir durante el lanzamiento de hechizos (programación).

El objetivo de este Laboratorio es capacitarte para escribir código Python robusto que pueda manejar y levantar excepciones adecuadamente, asegurando que tus hechizos (programas) no solo sean potentes sino también resilientes y seguros. Prepárate, porque estás a punto de emprender un viaje encantado por el mundo arcano de Levantar Excepciones en Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") subgraph Lab Skills python/raising_exceptions -.-> lab-271583{{"Levantamiento de excepciones en Python"}} end

Comprendiendo los conceptos básicos de las excepciones

En este paso, aprenderás sobre los conceptos básicos de las excepciones en Python. Una excepción en Python es como un evento no planeado que interrumpe el flujo de una secuencia de lanzamiento de hechizos. Cuando Python encuentra un error, detiene el proceso actual y lo pasa a través de la pila de llamadas hasta que es manejado. Si no es manejado, el hechizo (programa) se detiene y Python imprime un mensaje de error.

Para simular un escenario en el que una excepción podría ocurrir, crearás un script de Python simple que intente lanzar un hechizo (ejecutar una división) que salga mal.

Abre un archivo llamado spellcasting.py en el directorio ~/project con el siguiente contenido:

## spellcasting.py

def divide_potions(potions, wizards):
    return potions / wizards

## Un intento de dividir pociones entre cero magos, lo que generará una excepción.
divide_potions(10, 0)

Ejecuta tu script de lanzamiento de hechizos usando el comando:

python3 ~/project/spellcasting.py

Notarás que Python lanza un ZeroDivisionError. En el siguiente paso, aprenderás cómo manejar adecuadamente esta excepción:

Traceback (most recent call last):
  File "/home/labex/project/spellcasting.py", line 7, in <module>
    divide_potions(10, 0)
  File "/home/labex/project/spellcasting.py", line 4, in divide_potions
    return potions / wizards
ZeroDivisionError: división por cero

Lanzamiento de excepciones personalizadas

Es hora de pasar a una técnica de lanzamiento de hechizos más avanzada: lanzar tus propias excepciones. Esto te permite crear y usar mensajes de error personalizados, lo que hace que tus hechizos sean más flexibles y controlados.

En este paso, modificarás el script spellcasting.py para lanzar una excepción personalizada Exception cuando se le pase un número incorrecto de magos a la función divide_potions.

Primero, modifica la función divid_potions en spellcasting.py en consecuencia:

## spellcasting.py

def divide_potions(potions, wizards):
    if wizards == 0:
        raise Exception("No se pueden dividir pociones entre cero magos!")
    return potions / wizards

## Intenta dividir pociones nuevamente con un error intencional.
divide_potions(20, 0)

Después de guardar los cambios, ejecuta nuevamente tu script modificado:

python3 ~/project/spellcasting.py

Esta vez, Python lanzará el mensaje de excepción personalizada:

Traceback (most recent call last):
  File "/home/labex/project/spellcasting.py", line 7, in <module>
    divide_potions(20, 0)
  File "/home/labex/project/spellcasting.py", line 3, in divide_potions
    raise Exception("No se pueden dividir pociones entre cero magos!")
Exception: No se pueden dividir pociones entre cero magos!

Manejo de excepciones con Try-Except

En este paso, aprenderás a manejar las excepciones de manera adecuada utilizando el bloque try-except. Asegurarse de que tu hechizo (programa) pueda recuperarse de los errores es una habilidad fundamental para un mago.

Agrega el bloque try-except alrededor de la llamada a la función divide_potions en el script spellcasting.py:

## spellcasting.py

def divide_potions(potions, wizards):
    if wizards == 0:
        raise Exception("No se pueden dividir pociones entre cero magos!")
    return potions / wizards

try:
    ## Intenta dividir pociones y maneja posibles errores.
    result = divide_potions(30, 0)
    print(f"Cada mago recibe {result} pociones.")
except Exception as e:
    print(f"El hechizo falló: {e}")

Ejecútalo en la terminal:

python3 ~/project/spellcasting.py

Ahora, cuando ejecutas el script, en lugar de detenerse, imprimirá la salida:

El hechizo falló: No se pueden dividir pociones entre cero magos!

Resumen

En este laboratorio, aventuramos por las tierras hechizantes de Levantar Excepciones en Python. Comenzamos con una introducción a las excepciones permitiendo que una ocurra naturalmente, luego aprendimos cómo crear nuestras propias excepciones y mensajes, y finalmente terminamos con el arte de manejar estas excepciones sin romper nuestro hechizo (programa).

Ahora has dominado los conceptos básicos de levantar y manejar excepciones en Python, una habilidad que sin duda te servirá bien en tu viaje como mago codificador. Esto no solo contribuye a la robustez y amigabilidad para el usuario de tus programas, sino que también te enseña a predecir y prepararte para comportamientos inesperados, manteniendo tus hechizos indemnes y tu destreza como mago formidable.

Que el código te acompañe, joven hechicero.