Dominando Errores y Excepciones Integradas en Python
Errores y Excepciones Integradas en Python
Descubre cómo Python señala problemas, la diferencia entre errores de sintaxis y de ejecución, y cómo manejar excepciones integradas con confianza.
Video: Manejo de Excepciones en Python
Cuando ejecutas un programa Python, el intérprete detiene la ejecución inmediatamente si encuentra un error no manejado. Estos errores caen en dos categorías amplias:
- Errores de sintaxis – problemas detectados durante el análisis.
- Errores lógicos (excepciones) – problemas que surgen mientras el código se ejecuta.
Errores de Sintaxis en Python
Un error de sintaxis ocurre cuando el código fuente viola las reglas gramaticales de Python. El intérprete señala la ubicación exacta con un acento circunflejo (^) en el mensaje de error.
> >>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax
En este ejemplo, los dos puntos (:) faltantes después de la sentencia if disparan un SyntaxError.
Errores Lógicos en Python (Excepciones)
Los errores lógicos, o excepciones, surgen solo después de que el código pasa la verificación de sintaxis. Ejemplos comunes incluyen:
- Intentar dividir por cero (
ZeroDivisionError) - Abrir un archivo inexistente (
FileNotFoundError) - Importar un módulo no disponible (
ImportError)
Cuando se lanza una excepción, Python crea un objeto excepción. Si permanece sin manejar, se imprime un traceback mostrando la pila de llamadas y la razón del fallo.
> >>> 1 / 0
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
> >>> open("imaginario.txt")
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'imaginario.txt'
Excepciones Integradas de Python
El intérprete de Python lanza una amplia gama de excepciones integradas para señalar diferentes condiciones de fallo. Puedes listarlas con el siguiente snippet:
print(dir(locals()['__builtins__']))
Referencia concisa de las excepciones integradas más frecuentes y las situaciones que las disparan:
| Excepción | Causa del Error |
|---|---|
AssertionError | Lanzada cuando una sentencia assert falla. |
AttributeError | Lanzada cuando falla una asignación o referencia de atributo. |
EOFError | Lanzada cuando input() encuentra fin de archivo. |
FloatingPointError | Lanzada cuando una operación de punto flotante falla. |
GeneratorExit | Lanzada cuando se llama al método close() de un generador. |
ImportError | Lanzada cuando el módulo importado no se encuentra. |
IndexError | Lanzada cuando un índice de secuencia está fuera de rango. |
KeyError | Lanzada cuando una clave falta en un diccionario. |
KeyboardInterrupt | Lanzada cuando el usuario presiona Ctrl+C o Delete. |
MemoryError | Lanzada cuando una operación excede memoria disponible. |
NameError | Lanzada cuando una variable no se encuentra en ámbito local o global. |
NotImplementedError | Lanzada por métodos abstractos sin implementación. |
OSError | Lanzada para errores relacionados con el sistema (ej. E/S de archivos). |
OverflowError | Lanzada cuando un resultado aritmético es demasiado grande para representar. |
ReferenceError | Lanzada cuando una referencia débil proxyea un objeto recolectado por garbage collector. |
RuntimeError | Lanzada para errores que no encajan en otras categorías. |
StopIteration | Lanzada por next() cuando un iterador se agota. |
SyntaxError | Lanzada cuando el parser encuentra sintaxis inválida. |
IndentationError | Lanzada cuando la indentación es incorrecta. |
TabError | Lanzada cuando la indentación mezcla tabs y espacios inconsistentemente. |
SystemError | Lanzada cuando el intérprete detecta un error interno. |
SystemExit | Lanzada por sys.exit(). |
TypeError | Lanzada cuando una operación recibe un objeto de tipo inapropiado. |
UnboundLocalError | Lanzada cuando una variable local se referencia antes de asignación. |
UnicodeError | Lanzada para errores de codificación/decodificación Unicode. |
UnicodeEncodeError | Lanzada durante errores de codificación Unicode. |
UnicodeDecodeError | Lanzada durante errores de decodificación Unicode. |
UnicodeTranslateError | Lanzada durante errores de traducción Unicode. |
ValueError | Lanzada cuando una función recibe argumento de tipo correcto pero valor inapropiado. |
ZeroDivisionError | Lanzada al dividir o hacer módulo por cero. |
Si necesitas control más granular, Python permite definir clases de excepción personalizadas. Ver Excepciones Definidas por el Usuario en Python para detalles.
Manejar excepciones es sencillo con bloques try, except y finally. Para una inmersión más profunda, consulta Sentencias try, except y finally en Python.
python
- Palabras clave e identificadores en Python: Dominando palabras reservadas y convenciones de nomenclatura
- Sentencias, indentación y comentarios en Python: Guía clara
- Variables, constantes y literales en Python – Guía completa
- Dominando conversión y casting de tipos en Python: Guía completa
- Dominando E/S e importación de módulos en Python: Guía práctica
- Entendiendo variables globales, locales y nonlocal en Python
- Dominando Números, Conversión de Tipos y Matemáticas en Python
- Dominando Operaciones de Directorios y Archivos en Python
- Dominando Excepciones Personalizadas en Python: Guía Práctica
- Obtener la Fecha y Hora Actual en Python: Guía Práctica
- Java throw vs throws: Dominando el manejo de excepciones con ejemplos prácticos