Dominando el manejo de excepciones en Python: try, except, finally y raise efectivamente
Dominando el manejo de excepciones en Python: try, except, finally y raise efectivamente
¿Qué es el manejo de excepciones en Python?
Una excepción es un error que ocurre durante la ejecución de un programa. Sin embargo, mientras se ejecuta un programa, Python genera una excepción que debe manejarse para evitar que tu programa se bloquee. En Python, las excepciones se disparan automáticamente ante errores, o pueden ser lanzadas e interceptadas por tu código.
La excepción indica que, aunque el evento puede ocurrir, este tipo de evento sucede con poca frecuencia. Cuando el método no puede manejar la excepción, esta se lanza a su función llamadora. Eventualmente, cuando una excepción sale de la función principal, el programa termina abruptamente.
En este tutorial de manejo de excepciones en Python, aprenderás:
- Qué es una excepción en Python
- Ejemplos comunes de excepciones
- Por qué deberías usar excepciones
- Reglas de las excepciones
- Mecanismo de manejo de excepciones en Python
- Sentencia try en Python
- Sentencia except en Python
- Sentencia raise en Python
- Errores importantes de Python
- Otras excepciones importantes de Python
- Error vs. Excepciones
Ejemplos comunes de excepciones:
- División por cero
- Acceso a un archivo que no existe
- Adición de dos tipos incompatibles
- Intento de acceso a un índice inexistente de una secuencia
- Eliminación de tabla de servidor de base de datos desconectado
- Retiro en cajero automático de más del monto disponible
Por qué deberías usar excepciones
Razones para usar excepciones en Python:
- El manejo de excepciones permite separar el código de manejo de errores del código normal.
- Una excepción es un objeto de Python que representa un error.
- Al igual que los comentarios de código, las excepciones te ayudan a recordar lo que el programa espera.
- Aclara el código y mejora la legibilidad.
- Permite estimular consecuencias ya que el manejo de errores ocurre en un solo lugar y de una sola manera.
- Una excepción es un método conveniente para manejar mensajes de error.
- En Python, puedes lanzar una excepción en el programa usando el método raise exception.
- Lanzar una excepción ayuda a romper la ejecución actual del código y devuelve la excepción hasta que es manejada.
- Procesamiento de excepciones para componentes que no pueden manejarlas directamente.
Reglas de las excepciones
Reglas esenciales del manejo de excepciones en Python:
- Las excepciones deben ser objetos de clase
- Para excepciones de clase, puedes usar sentencia try con una cláusula except que mencione una clase particular.
- Incluso si una sentencia o expresión es sintácticamente correcta, puede mostrar un error cuando se intenta ejecutar.
- Los errores encontrados durante la ejecución se llaman excepciones, y no son incondicionalmente fatales.
Mecanismo de manejo de excepciones en Python
El manejo de excepciones se gestiona mediante las siguientes 5 palabras clave:
- try
- except
- finally
- raise
Sentencia try en Python
Una sentencia try incluye la palabra clave try, seguida de dos puntos (:) y un bloque de código en el que pueden ocurrir excepciones. Tiene una o más cláusulas.
Durante la ejecución de la sentencia try, si no ocurren excepciones, el intérprete ignora los manejadores de excepción para esa sentencia try específica.
En caso de que ocurra alguna excepción en un bloque try, el bloque try expira y el control del programa se transfiere al manejador except coincidente que sigue al bloque try.
Sintaxis:
try:
sentencia(s)
La sentencia except
Los bloques except toman un argumento a la vez, que es el tipo de excepción que es probable que capturen. Estos argumentos pueden variar desde un tipo específico de excepción hasta una categoría general de excepciones.
Reglas para el bloque except:
- Puedes definir un bloque except usando la palabra clave except
- El parámetro de excepción siempre está entre paréntesis
- Siempre representa el tipo de excepción que maneja el bloque except.
- El código de manejo de excepciones se escribe entre dos llaves {}.
- Puedes colocar múltiples bloques except dentro de un solo bloque try.
- Solo puedes usar un bloque except después del bloque try.
- Todos los bloques except deben ordenarse de subclase a superclase de excepción.
Ejemplo:
try:
# código que puede fallar
except ArrayIndexOutOfBoundsException as e:
print("Capturado primero " + str(e))
except IOException as e:
print("Capturado segundo " + str(e))
Sentencia finally en Python
El bloque finally siempre se ejecuta independientemente de si se lanzó una excepción o no. La palabra clave finally te permite crear un bloque de código que sigue a un bloque try-except.
La cláusula finally es opcional. Está destinada a definir acciones de limpieza que deben ejecutarse en todas las condiciones.
try:
raise KeyboardInterrupt
finally:
print('¡Bienvenido, mundo!')
# Salida:
# Welcome, world!
# KeyboardInterrupt
La cláusula finally se ejecuta antes de la sentencia try.
Sentencia raise en Python
La sentencia raise especifica un argumento que inicializa el objeto excepción. Aquí, una coma sigue al nombre de la excepción, y el argumento o tupla de argumentos que sigue a la coma.
Sintaxis:
raise [Excepcion [, args [, traceback]]]
En esta sintaxis, el argumento es opcional, y en el momento de la ejecución, el valor del argumento de excepción siempre es none.
Ejemplo:
Una excepción de Python puede ser cualquier valor como una cadena, clase, número u objeto. La mayoría de estas excepciones lanzadas por el núcleo de Python son clases con un argumento que es una instancia de la clase.
Errores importantes de Python
| Tipo de Error | Descripción |
|---|---|
| ArithmeticError | Clase base para todas las excepciones aritméticas. Se lanza por errores en operaciones aritméticas. |
| ImportError | Se lanza al intentar importar un módulo que no está presente. Ocurre si hay error tipográfico en el nombre del módulo o el módulo no está en la ruta estándar. |
| IndexError | Se lanza al intentar referenciar una secuencia fuera de rango. |
| KeyError | Cuando una clave específica no se encuentra en un diccionario, se lanza KeyError. |
| NameError | Se lanza cuando un nombre se refiere en código pero nunca existe en el espacio de nombres local o global. |
| ValueError | Se lanza cuando una función u operación integrada recibe un argumento de tipo correcto pero valor inadecuado. |
| EOFError | Se lanza cuando una de las funciones integradas (input() o raw_input()) alcanza condición EOF sin leer datos. |
| ZeroDivisionError | Se lanza cuando división o módulo por cero ocurre para todos los tipos numéricos. |
| IOError | Se lanza cuando una operación de entrada/salida falla. |
| SyntaxError | Se lanza cuando hay un error en la sintaxis de Python. |
| IndentationError | Se lanza cuando la indentación no está correctamente definida. |
Otras excepciones importantes de Python
| Excepción | Descripción |
|---|---|
| ArithmeticException | Error aritmético, como división por cero. |
| ArrayIndexOutOfBoundsException | Índice de array fuera de límites. |
| ArrayStoreException | Asignación a elemento de array de tipo incompatible. |
| ClassCastException | Cast inválido |
| IllegalMonitorStateException | Operación de monitor ilegal, como esperar en hilo sin bloqueo. |
| IllegalStateException | Entorno o aplicación en estado incorrecto. |
| ClassNotFoundException | Clase no encontrada. |
| CloneNotSupportedException | Intento de clonar objeto que no implementa interfaz Cloneable. |
| IllegalAccessException | Acceso a clase denegado. |
| InstantiationException | Ocurre al intentar crear objeto de interfaz o clase abstracta. |
| CloneNotSupportedException | Intento de clonar objeto que no implementa la interfaz. |
Error vs. Excepciones
| Error | Excepciones |
|---|---|
| Todos los errores en Python son del tipo unchecked. | Las excepciones incluyen tanto checked como unchecked. |
| Los errores ocurren en tiempo de ejecución, desconocidos para el compilador. | Las excepciones pueden recuperarse manejándolas con bloques try-catch. |
| Los errores son causados principalmente por el entorno donde se ejecuta la aplicación. | La aplicación misma causa las excepciones. |
| Ejemplos: OutOfMemoryError | Ejemplos: Excepciones checked, SQL exception, NullPointerException, etc. |
Resumen
- Una excepción es un error que ocurrió durante la ejecución de un programa.
- La excepción indica que, aunque el evento puede ocurrir, este tipo de evento sucede infrequentemente.
- Ejemplos comunes: 1) División por cero, 2) Acceso a archivo inexistente, 3) Adición de tipos incompatibles.
- Una excepción es un objeto de Python que representa un error.
- Una sentencia try incluye try, dos puntos (:) y un bloque donde pueden ocurrir excepciones.
- Los bloques except toman un argumento: el tipo de excepción que probablemente capturarán.
- La sentencia raise especifica un argumento que inicializa el objeto excepción.
- El bloque finally siempre se ejecuta independientemente de si se lanzó una excepción o no.
python
- Manejo de excepciones en C++: Guía práctica con try, catch, throw
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando el Manejo de Excepciones en Python: try, except, else y finally Explicados
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando el manejo de excepciones en Java: Try, Catch, Finally, Throw y Throws explicados
- Dominando el manejo de excepciones en Java: Try, Catch, Finally y Recursos