ComenzarEmpieza gratis

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

Ver curso

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:

  • try ejecutar 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))
Editar y ejecutar código