Detección de excepciones
Antes de que empieces a escribir tus propias excepciones personalizadas, asegurémonos de que conoces los fundamentos del manejo de excepciones.
En este ejercicio, se te da una función invert_at_index(x, ind)
que toma 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
, o 0.166666
.
Intenta ejecutar el código tal cual y examina la salida en la consola. Hay dos operaciones inseguras en esta función: en primer lugar, si el elemento que intentamos invertir tiene el valor 0
, el código provocará una excepción ZeroDivisionError
. En segundo lugar, 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 guión se interrumpirá, lo que puede no ser deseable.
Este ejercicio forma parte del curso
Programación orientada a objetos en Python
Instrucciones de ejercicio
Utiliza un patrón try
- except
- except
(con dos bloques except
) dentro de la función para atrapar y manejar dos excepciones de la siguiente manera:
try
ejecutando el código tal cual,- si aparece
ZeroDivisionError
, imprime"Cannot divide by zero!"
, - si se produce
IndexError
, imprime"Index out of range!"
Sabes 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
Pruebe este ejercicio completando este 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))