Capturar excepciones
Antes de que empieces a escribir tus propias excepciones personalizadas, asegúrate de dominar lo básico del manejo de excepciones.
En este ejercicio tienes una función invert_at_index(x, ind) que recibe dos argumentos: una lista x y un índice ind, e invierte el elemento de la lista en ese índice. Por ejemplo, invert_at_index([5,6,7], 1) devuelve 1/6, es decir, 0.166666.
Prueba a ejecutar el código tal cual y examina la salida en la consola. Hay dos operaciones inseguras en esta función: primero, si el elemento que intentamos invertir tiene el valor 0, el código provocará una excepción ZeroDivisionError. Segundo, si el índice pasado a la función está fuera del rango de la lista, el código provocará un IndexError. En ambos casos, el script se interrumpirá, lo cual podría no ser lo deseable.
Este ejercicio forma parte del curso
Programación orientada a objetos en Python
Instrucciones del ejercicio
Usa un patrón try - except - except (con dos bloques except) dentro de la función para capturar y manejar dos excepciones de la siguiente manera:
tryejecutar el código tal cual,- si ocurre
ZeroDivisionError, imprime"Cannot divide by zero!", - si ocurre
IndexError, imprime"Index out of range!"
Sabrás que lo has hecho bien si el código se ejecuta sin errores y la salida en la consola es:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
return 1/x[ind]
a = [5,6,0,7]
# Works okay
print(invert_at_index(a, 1))
# Potential ZeroDivisionError
print(invert_at_index(a, 2))
# Potential IndexError
print(invert_at_index(a, 5))