0% encontró este documento útil (0 votos)
11 vistas

Python-Excepciones

facultad de ingenieria unlpam tecnicatura en telecomunicaciones

Cargado por

Maxi Ruiz
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas

Python-Excepciones

facultad de ingenieria unlpam tecnicatura en telecomunicaciones

Cargado por

Maxi Ruiz
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Tecnicatura Universitaria en Telecomunicaciones

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

Bloque try : va el código que puede generar una excepción.


Bloque except : Si se produce una excepción dentro del bloque try, el flujo del
programa se transfiere a este bloque. El TipoDeExcepcion especifica el tipo de
excepción a capturar.

8
Excepciones - Ejemplo elemental
try:
num1 = int(input("Ingrese el primer número: "))
num2 = int(input("Ingrese el segundo número: "))

resultado = num1 / num2

print("El resultado es:", resultado)


except ZeroDivisionError:
print("No se puede dividir entre cero.")
except ValueError:
print("Por favor, ingrese solo números enteros.")

Si el usuario ingresa un número no entero, se capturará la excepción ValueError .


Si el usuario ingresa una letra, se capturará la excepción ValueError .
Si el usuario intenta dividir entre cero, se capturará la excepción
ZeroDivisionError .
9
Excepciones - Ejemplo elemental
try:
num1 = int(input("Ingrese el primer número: "))
num2 = int(input("Ingrese el segundo número: "))

resultado = num1 / num2

print("El resultado es:", resultado)

except (ZeroDivisionError, ValueError) as error:


print("Algo salió mal: ",error)
# Manejo de múltiples excepciones mediante un bloque de excepciones

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: "))

resultado = num1 / num2

print("El resultado es:", resultado)

except (ZeroDivisionError, ValueError) as error:


print("Algo salió mal: ",error)
else:
print("... Todo OK")
finally:
print("Sale o Sale")

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.

if edad < 18:


raise ValueError("Debe ser mayor de 18 años")

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

También podría gustarte