El manejo de excepciones es una parte fundamental de la programación en Python y te permite controlar errores y situaciones excepcionales de manera elegante. A continuación, aprenderás cómo manejar errores y excepciones en Python.
Tipos de Excepciones
Python tiene varios tipos de excepciones incorporados que representan diferentes tipos de errores. Algunos ejemplos comunes son:
`SyntaxError`: Ocurre cuando hay un error de sintaxis en tu código.
`NameError`: Ocurre cuando intentas acceder a una variable o función que no ha sido definida.
`TypeError`: Ocurre cuando se realiza una operación no válida en un tipo de datos.
`ValueError`: Ocurre cuando una función recibe un argumento del tipo correcto pero con un valor incorrecto.
`ZeroDivisionError`: Ocurre cuando se intenta dividir entre cero.
Bloques `try...except`
Para manejar excepciones, utiliza bloques `try...except`. En el bloque `try`, coloca el código que podría generar una excepción. En el bloque `except`, maneja la excepción específica o genérica que desees.
try:
resultado = 10 / 0
except ZeroDivisionError:
print("No se puede dividir entre cero.")
Puedes utilizar múltiples bloques `except` para manejar diferentes excepciones.
try:
resultado = 10 / 0
except ZeroDivisionError:
print("No se puede dividir entre cero.")
except NameError:
print("Ha ocurrido un error de nombre.")
Bloque `else`
Puedes usar el bloque `else` para especificar un código que se ejecutará si no se produce ninguna excepción en el bloque `try`.
try:
resultado = 10 / 2
except ZeroDivisionError:
print("No se puede dividir entre cero.")
else:
print("El resultado es:", resultado)
Bloque `finally`
El bloque `finally` se utiliza para definir código que se ejecutará sin importar si se produce o no una excepción.
try:
resultado = 10 / 2
except ZeroDivisionError:
print("No se puede dividir entre cero.")
else:
print("El resultado es:", resultado)
finally:
print("Este bloque se ejecutará siempre.")
Excepciones Genéricas
Puedes manejar excepciones genéricas utilizando `except Exception` para capturar cualquier excepción que herede de la clase base `Exception`. Esto es útil para atrapar cualquier error no previsto.
try:
resultado = 10 / 0
except Exception as e:
print("Ha ocurrido un error:", e)
Lanzar Excepciones
También puedes lanzar tus propias excepciones usando la instrucción `raise`. Esto es útil cuando quieres controlar errores personalizados.
def dividir(a, b):
if b == 0:
raise ValueError("El divisor no puede ser cero.")
return a / b
Personalizar Excepciones
Puedes crear tus propias clases de excepciones personalizadas heredando de la clase base `Exception`. Esto te permite definir excepciones específicas para tu aplicación.
class MiErrorPersonalizado(Exception):
def __init__(self, mensaje):
super().__init__(mensaje)
try:
raise MiErrorPersonalizado("Este es un error personalizado.")
except MiErrorPersonalizado as e:
print(e)
Gestión de Errores Múltiples
Puedes manejar múltiples excepciones en un solo bloque `except` utilizando paréntesis.
try:
resultado = 10 / 0
except (ZeroDivisionError, NameError) as e:
print("Ha ocurrido un error:", e)
El manejo de excepciones es una parte crucial de la escritura de código robusto y confiable en Python. Utiliza bloques `try...except` para anticipar y manejar posibles errores en tu código. ¡Esto ayudará a que tus programas sean más robustos y amigables para los usuarios!