Skip to content

Latest commit

 

History

History
94 lines (79 loc) · 4.06 KB

manejo_excepciones.md

File metadata and controls

94 lines (79 loc) · 4.06 KB

Manejo de Excepciones en Python

El manejo de excepciones es una parte fundamental de la programación para hacer que tu código sea más robusto y fácil de mantener. En Python, puedes usar bloques try-except para capturar y manejar errores. Aquí te explico los puntos más importantes para que aprendas a usar correctamente las excepciones.

1. Evita silenciar las excepciones con except: sin especificar el error

Siempre debes capturar errores específicos, en lugar de usar un bloque genérico como except:. Esto puede ocultar errores importantes y hacer que el programa continúe en un estado inesperado. Por ejemplo, si solo capturas una excepción general, podrías estar ignorando fallos graves en tu código, lo que dificultaría encontrar el problema.

Incorrecto:

try:
    resultado = 10 / 0
except:
    print("*ERROR* Algo salió mal.")

En este ejemplo, cualquier error, no solo la división por cero, sería capturado y el mensaje no te daría información suficiente.

Correcto:

try:
    resultado = 10 / 0
except ZeroDivisionError:
    print("*ERROR* No se puede dividir por cero.")

Aquí, solo capturamos un error específico, lo que nos permite dar un mensaje claro y preciso.

2. Capturar múltiples excepciones en una sola línea

Puedes manejar múltiples tipos de errores en una sola línea usando una tupla. Esto es útil cuando sabes que pueden ocurrir varios tipos de errores y quieres manejarlos de la misma forma.

Ejemplo:

try:
    resultado = float(input("Introduce un número: ")) / 0
except (ZeroDivisionError, ValueError) as e:
    print(f"*ERROR* {e}")

En este ejemplo, capturamos tanto el error de división por cero como el error de valor incorrecto en la entrada de una sola vez.

3. Lanzar excepciones con raise

A veces, querrás lanzar tus propias excepciones cuando ocurra una condición específica en tu programa. Para esto se utiliza la instrucción raise. Puedes lanzar excepciones integradas como ValueError o crear tus propias excepciones.

Ejemplo con raise:

def validar_edad(edad):
    if edad < 0:
        raise ValueError("La edad no puede ser negativa.")
    elif edad > 120:
        raise ValueError("La edad no puede ser mayor a 120.")
    return edad

try:
    validar_edad(-5)
except ValueError as e:
    print(e)

En este caso, lanzamos un ValueError si la edad es inválida, y luego lo capturamos con un bloque try-except.

4. Uso de else en try-except

El bloque else se ejecuta solo si no ocurre ninguna excepción. Esto es útil para ejecutar código solo cuando todo ha ido bien y no se ha lanzado ningún error.

Ejemplo:

try:
    resultado = 10 / 2
except ZeroDivisionError:
    print("Error en la división.")
else:
    print(f"El resultado es: {resultado}")

Si no ocurre ningún error en la división, el bloque else imprimirá el resultado de la operación.

5. Uso de finally para tareas de limpieza

El bloque finally siempre se ejecuta, independientemente de si ocurrió una excepción o no. Esto es útil para liberar recursos o asegurarte de que algo ocurra, como cerrar un archivo o desconectar una base de datos.

Ejemplo con finally:

def dividir(num1, num2):
    try:
        resultado = num1 / num2
        return resultado
    except ZeroDivisionError:
        print("*ERROR* No se puede dividir por cero.")
    finally:
        print("Operación finalizada.")

En este caso, el bloque finally se ejecutará siempre, incluso si hay un error en la división, lo que puede ser útil para tareas de limpieza.

Conclusión:

El manejo adecuado de excepciones te permitirá escribir código más robusto y seguro. Recuerda siempre:

  • Capturar excepciones específicas.
  • Usar else para separar el código de éxito del manejo de errores.
  • Usar raise para lanzar tus propias excepciones cuando sea necesario.
  • Usar finally para liberar recursos o realizar tareas críticas.

Al seguir estas prácticas, tus programas serán más fáciles de mantener y menos propensos a fallos inesperados.