En este tema, aprenderemos cómo manejar excepciones en Python. Las excepciones son eventos que ocurren durante la ejecución de un programa y que pueden interrumpir el flujo normal de las instrucciones. Python proporciona mecanismos para manejar estas excepciones de manera que el programa pueda continuar su ejecución o finalizar de manera controlada.
Conceptos Clave
- Excepciones: Eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de las instrucciones.
- Bloques
tryyexcept: Estructuras que permiten manejar excepciones. - Bloque
else: Se ejecuta si no se produce ninguna excepción. - Bloque
finally: Se ejecuta siempre, independientemente de si se produjo una excepción o no.
Bloques try y except
El manejo de excepciones en Python se realiza utilizando los bloques try y except. La sintaxis básica es la siguiente:
try:
# Código que puede producir una excepción
pass
except ExceptionType:
# Código que se ejecuta si ocurre una excepción de tipo ExceptionType
passEjemplo Práctico
Vamos a ver un ejemplo práctico donde intentamos dividir dos números. Si el divisor es cero, se produce una excepción ZeroDivisionError.
try:
numerator = 10
denominator = 0
result = numerator / denominator
print("El resultado es:", result)
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")Explicación:
- El bloque
trycontiene el código que puede producir una excepción. - Si se produce una excepción
ZeroDivisionError, el control pasa al bloqueexcept, donde se maneja la excepción.
Múltiples Excepciones
Puedes manejar múltiples excepciones utilizando varios bloques except:
try:
value = int(input("Introduce un número: "))
result = 10 / value
print("El resultado es:", result)
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
except ValueError:
print("Error: Entrada no válida. Por favor, introduce un número entero.")Bloques else y finally
El bloque else se ejecuta si no se produce ninguna excepción, y el bloque finally se ejecuta siempre, independientemente de si se produjo una excepción o no.
try:
value = int(input("Introduce un número: "))
result = 10 / value
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
except ValueError:
print("Error: Entrada no válida. Por favor, introduce un número entero.")
else:
print("El resultado es:", result)
finally:
print("El bloque finally se ejecuta siempre.")Ejercicio Práctico
Ejercicio 1
Escribe un programa que solicite al usuario que introduzca dos números y luego intente dividir el primero por el segundo. Maneja las excepciones ZeroDivisionError y ValueError.
def dividir_numeros():
try:
num1 = float(input("Introduce el primer número: "))
num2 = float(input("Introduce el segundo número: "))
resultado = num1 / num2
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
except ValueError:
print("Error: Entrada no válida. Por favor, introduce números.")
else:
print("El resultado de la división es:", resultado)
finally:
print("Operación completada.")
dividir_numeros()Solución
def dividir_numeros():
try:
num1 = float(input("Introduce el primer número: "))
num2 = float(input("Introduce el segundo número: "))
resultado = num1 / num2
except ZeroDivisionError:
print("Error: No se puede dividir por cero.")
except ValueError:
print("Error: Entrada no válida. Por favor, introduce números.")
else:
print("El resultado de la división es:", resultado)
finally:
print("Operación completada.")
dividir_numeros()Resumen
En esta sección, hemos aprendido cómo manejar excepciones en Python utilizando los bloques try, except, else y finally. Estos mecanismos nos permiten escribir programas más robustos y controlados, capaces de manejar errores de manera efectiva y continuar su ejecución o finalizar de manera controlada. En la próxima sección, exploraremos cómo lanzar nuestras propias excepciones personalizadas.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn
