Python-Excepciones
Python-Excepciones
Año 2024
AP Santiago Nicolau
1
PROGRAMACIÓN
Errores y Excepciones
2
Errores y excepciones
Un programa Python finaliza en cuanto encuentra un error.
Hay (al menos) dos tipos diferentes de errores:
errores de sintaxis (conocidos como errores de interpretación)
excepciones .
3
Errores de sintaxis
Los errores de sintaxis ocurren cuando el analizador (parser) detecta una
sentencia (orden) incorrecta.
El parser detiene la ejecución, imprime la línea con el error y muestra
pequeñas "flechas" que apuntan al token en la línea donde se detectó el error.
El error puede deberse a la ausencia de un token antes del token indicado.
También se imprimen el nombre del archivo y el número de línea.
4
Excepciones
El manejo de excepciones es el proceso de responder a la ocurrencia de
condiciones anómalas o excepcionales que requieren un procesamiento
especial.
Una sentencia o expresión válida desde el punto de vista de la sintaxis puede
generar una excepción en tiempo de ejecución.
Errores detectados durante la ejecución se llaman excepciones, y pueden
ser fatales o no. Si lo son, el programa no logrará recuperarse y continuar con
la normal ejecución.
5
Excepciones
La mayoría de las excepciones no son gestionadas por el código, y resultan en
mensajes de error.
Es fundamental gestionar las excepciones para evitar la interrupción
inesperada del programa y proporcionar una experiencia de usuario más
robusta.
6
Excepciones - ¿Por que manejarlas?
Evitar que el programa se detenga abruptamente: Al manejar las
excepciones, se pueden capturar errores y tomar acciones alternativas,
evitando que el programa se bloquee.
Proporcionar mensajes de error claros: el personalizar los mensajes de
error brindará más información al usuario.
Implementar lógica de recuperación: es posible tomar medidas para
corregir el error o continuar la ejecución del programa de manera segura.
7
Excepciones - Estructura try-except
Se emplea la estructura try-except para manejar las excepciones
try:
# Código que puede generar una excepción
except TipoDeExcepcion:
# Código a ejecutar si se produce la excepción
8
Excepciones - Ejemplo elemental
try:
num1 = int(input("Ingrese el primer número: "))
num2 = int(input("Ingrese el segundo número: "))
10
Excepciones - Estructura Completa
try:
# Código que puede generar una anomalía
except TipoDeExcepcion:
# Manejar la excepción
else:
# Si no hay excepción
finally:
# Siempre se ejecuta
11
Excepciones - Estructura Completa - Ejemplo
try:
num1 = int(input("Ingrese el primer número: "))
num2 = int(input("Ingrese el segundo número: "))
12
Excepciones - Tipos comunes
ZeroDivisionError : Se produce al intentar dividir entre cero.
ValueError : Se produce cuando se pasa un argumento de un tipo incorrecto a una
función.
: Se produce cuando se realizan operaciones entre objetos de tipos
TypeError
incompatibles.
IndexError : Se produce al intentar acceder a un elemento de una lista o tupla que
no existe.
KeyError: Se produce al intentar acceder a una clave que no existe en un
diccionario.
13
Excepciones - Lanzando Manualmente
Utilizando la palabra clave raise se lanza una excepción manualmente,
pudiendo ser útil para indicar condiciones de error personalizadas.
14
Excepciones - Anidadas
Consiste en colocar bloques try-except dentro de otros, creando una
jerarquía de manejo de errores.
Se puede usar cuando el bloque de código puede generar múltiples tipos de
excepciones, y se desea manejar cada una de ellas de forma específica.
15
Excepciones - Anidadas - Beneficios
Permite capturar excepciones más específicas dentro de excepciones más
generales.
Ayuda a organizar el código y a hacerlo más legible.
Deja manejar excepciones en diferentes niveles de profundidad en el código.
16
Excepciones - Anidadas - ¿Cuándo utilizar?
Cuando existe múltiples niveles de abstracción: Por ejemplo, al trabajar con
todo lo relacionado a E/S (archivos, bases de datos, red, etc) y otras
operaciones que pueden generar diferentes tipos de excepciones.
Cuando se quiere manejar las excepciones de forma granular: realizar
acciones específicas dependiendo del tipo de excepción.
Para mejorar la legibilidad del código: Al anidar las excepciones, puede que
el código sea más fácil de entender y mantener.
17
Excepciones - Anidadas - Consideraciones
Orden de los bloques except: El orden de los bloques except es importante.
Las excepciones más específicas deben ir antes de las más generales.
Uso de else : utilizar un bloque else después de los bloques except para
ejecutar código si no se produjo ninguna excepción.
Propagación de excepciones: Si una excepción no es capturada en un
bloque except , se propaga hacia arriba hasta encontrar un bloque except
que pueda manejarla.
18
Excepciones - Anidadas - Ejemplo
try:
# Código que puede generar una excepción general
archivo = open("datos.txt", "r")
try:
# Código que puede generar una excepción más específica
numero = int(archivo.readline())
resultado = 10 / numero
print(resultado)
except ZeroDivisionError:
print("No se puede dividir entre cero.")
finally:
archivo.close()
except FileNotFoundError:
print("El archivo no existe.")
except ValueError:
print("El contenido del archivo no es un número.")
19
Excepciones - Anidadas - Explicación del Ejemplo
Primer bloque try: Intenta abrir el archivo. Si no existe, se captura la excepción
FileNotFoundError.
Segundo bloque try: Dentro del primer bloque, intenta convertir la primera línea
del archivo a un número entero y realizar una división.
Excepciones internas:
ZeroDivisionError: Si se intenta dividir entre cero.
finally: Siempre se ejecuta para cerrar el archivo, independientemente de si se
produjo una excepción.
Excepciones externas:
ValueError: Si el contenido del archivo no se puede convertir a un número
entero.
20
FIN
21