Manejo de excepciones en Python 3

1. Excepciones

Se podría dar la opción de introducir una cadena, cuando el programa esta esperando un número para su conversión.

Ejemplo código:

n = float( input(“Introduce un número: “))

m = 4

print(“{}/{}={}”.format(n,m,n/m))

Introduce un número: aaa

ValueError: could not convert string to float: ‘aaa’

Solución:

while(True):

try:

n = float( input(“Introduce un número: “))

m = 4

print(“{}/{}={}”.format(n,m,n/m))

break # Acabar aquí el programa si se muestra esto correctamente

except:

print(“Ha ocurrido un error, introduce bien el número”)

En el bloque de excepciones podemos añadir la sección else, indicando ahí el break ya que ese bloque se ejecutará si no ha ocurrido ninguna excepción.

while(True):

try:

n = float( input(“Introduce un número: “))

m = 4

print(“{}/{}={}”.format(n,m,n/m))

except:

print(“Ha ocurrido un error, introduce bien el número”)

else:

print(“Todo ha funcionado correctamente”)

break

Pero todavía queda otro método denominado finally, que se ejecutará siempre al final de cada iteración del try haya un error o no.

finally:

print(“Fin de la iteración”)

2. Excepciones múltiples

try:

n = input(“Introduce un número: “)

5/n

except TypeError:

print(“No se puede dividir el número por una cadena”)

except ValueError:

print(“Debes introducir una cadena que sea un número”)

except ZeroDivisionError:

print(“No se puede dividir por 0”)

# Este último except es simplemente para ver el nombre de la excepción

except Exception as e:

print( type(e).__name__ )

3. Invocación de excepciones

def mi_funcion(algo=None):

try:

if algo is None:

raise ValueError(“Error! No se permite un valor nulo”)

except ValueError:

print(“Error! No se permite un valor nulo (desde la excepción)”)

mi_funcion()

Error! No se permite un valor nulo (desde la excepción)

Todas las excepciones existentes

Ejercicios resueltos

1) Localiza el error en el siguiente bloque de código. Crea una excepción para evitar que el programa se bloquee y además explica en un mensaje al usuario la causa y/o solución:

try:

resultado = 10/0

except ZeroDivisionError:

print(“Error: No es posible dividir por 0”)

2) Localiza el error en el siguiente bloque de código. Crea una excepción para evitar que el programa se bloquee y además explica en un mensaje al usuario la causa y/o solución:

lista = [1, 2, 3, 4, 5]

try:

lista[10]

except IndexError:

print(“Error: El indice se encuentra fuera de rango”)

3) Localiza el error en el siguiente bloque de código. Crea una excepción para evitar que el programa se bloquee y además explica en un mensaje al usuario la causa y/o solución:

colores = { ‘rojo’: ‘red’, ‘verde’:‘green’, ‘negro’: ‘black’}

try:

colores[‘blanco’]

except KeyError:

print(“error: La clave del diccionario no se encuentra”)

4) Localiza el error en el siguiente bloque de código. Crea una excepción para evitar que el programa se bloquee y además explica en un mensaje al usuario la causa y/o solución:

try:

resultado = “20” + 15

except TypeError:

print(“Error: Los datos deben de ser del mismo tipo para sumarlos”)

5) Realiza una función llamada agregar_una_vez() que reciba una lista y un elemento. La función debe añadir el elemento al final de la lista con la condición de no repetir ningún elemento. Además si este elemento ya se encuentra en la lista se debe invocar un error de tipo ValueError que debes capturar y mostrar este mensaje en su lugar:

Error: Imposible añadir elementos duplicados => [elemento].

elementos = [1, 5, -2]

def agregar_una_vez(lista, e):

try:

if e in lista:

raise ValueError

else:

lista.append(e)

except ValueError:

print(“Error: Imposible añadir elementos duplicados =>.format(e) )

agregar_una_vez(elementos, 10)

agregar_una_vez(elementos, -2)

agregar_una_vez(elementos,“Hola”)

print(elementos)

Error: Imposible añadir elementos duplicados => -2

[1, 5, -2, 10, ‘Hola’]

Autor entrada: CharlieJ

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *