Excepciones integradas
A continuación, te mostramos algunas de las excepciones más comunes en Python, con sus descripciones y ejemplos prácticos.
ArithmeticError
Ubicación en el árbol de excepciones: BaseException ← Exception ← ArithmeticError
Es una excepción abstracta que engloba los errores relacionados con operaciones aritméticas, como división entre cero o dominio inválido de un argumento.
AssertionError
Ubicación: BaseException ← Exception ← AssertionError
Se lanza cuando una expresión assert evalúa a falso. Es útil para verificar condiciones críticas.
from math import tan, radians
angle = int(input('Ingresa un ángulo entero en grados: '))
# Asegúrate de que angle != 90 + k * 180
assert angle % 180 != 90
print(tan(radians(angle)))
En este caso, AssertionError se genera si el ángulo es inválido para la operación tan().
BaseException
Ubicación: BaseException
Es la excepción más general en Python. Todas las demás excepciones derivan de esta.
IndexError
Ubicación: BaseException ← Exception ← LookupError ← IndexError
Se genera cuando intentas acceder a un índice que no existe en una secuencia, como listas o tuplas.
lista = [1, 2, 3, 4, 5]
indice = 0
continua = True
while continua:
try:
print(lista[indice])
indice += 1
except IndexError:
continua = False
print('Listo')
Aquí, cuando indice supera la longitud de la lista, se lanza un IndexError.
KeyboardInterrupt
Ubicación: BaseException ← KeyboardInterrupt
Se lanza cuando el usuario interrumpe la ejecución de un programa mediante un atajo de teclado, como Ctrl-C.
from time import sleep
segundos = 0
while True:
try:
print(segundos)
segundos += 1
sleep(1)
except KeyboardInterrupt:
print("¡No hagas eso!")
Este código captura la interrupción y continúa ejecutándose.
LookupError
Ubicación: BaseException ← Exception ← LookupError
Una excepción abstracta que agrupa errores relacionados con accesos inválidos a colecciones, como listas o diccionarios.
MemoryError
Ubicación: BaseException ← Exception ← MemoryError
Se lanza cuando el sistema no tiene suficiente memoria para completar una operación.
cadena = 'x'
try:
while True:
cadena = cadena + cadena
print(len(cadena))
except MemoryError:
print('¡Esto no es gracioso!')
Este código puede generar un MemoryError si la cadena crece demasiado.
OverflowError
Ubicación: BaseException ← Exception ← ArithmeticError ← OverflowError
Se lanza cuando una operación produce un número demasiado grande para ser manejado.
from math import exp
ex = 1
try:
while True:
print(exp(ex))
ex *= 2
except OverflowError:
print('El número es demasiado grande.')
Este código causa un OverflowError cuando el número generado es demasiado grande.
ImportError
Ubicación: BaseException ← Exception ← ImportError
Se genera cuando falla una operación de importación de un módulo.
try:
import math
import time
import abracadabra # Esto fallará
except ImportError:
print('Una de tus importaciones ha fallado.')
KeyError
Ubicación: BaseException ← Exception ← LookupError ← KeyError
Se genera cuando se intenta acceder a una clave inexistente en un diccionario.
diccionario = {'a': 'b', 'b': 'c', 'c': 'd'}
clave = 'a'
try:
while True:
clave = diccionario[clave]
print(clave)
except KeyError:
print('No existe tal clave:', clave)
Para más información sobre excepciones, puedes consultar la documentación oficial de Python.
Cuestionario
- ¿Cuál de las excepciones se utilizará para proteger al código de ser interrumpido por el uso del teclado?
- ¿Cuál es el nombre de la más general de todas las excepciones de Python?
- ¿Cuál de las excepciones será generada a través de la siguiente evaluación fallida?
huge_value = 1E250 ** 2
Solución cuestionario
-
Pregunta 1
KeyboardInterrupt -
Pregunta 2
BaseException -
Pregunta 3
OverflowError