Excepciones. ¿Qué son y para qué sirven? (A3C34C1D03)

Introducción

Con carácter general, una excepción se puede entender como un evento que ocurre durante la ejecución de un programa y que altera su flujo de ejecución predefinido. En este sentido, la ocurrencia de una excepción es algo no deseado, ya que se aleja del comportamiento esperado de un programa. Sin embargo, es posible capturar y manejar las excepciones que puedan ocurrir en tiempo de ejecución, es decir, cuando un programa se está ejecutando, con el objetivo de recuperar la normalidad y continuar con la ejecución del mismo.

La mayoría de los lenguajes de programación modernos, como Python, incluyen soporte nativo para la definición, captura y gestión de excepciones. Esto quiere decir que el propio lenguaje ofrece instrucciones específicas para tratar excepciones, facilitando así el desarrollo de programas robustos ante errores en tiempo de ejecución. Este es el principal cometido de la gestión de excepciones.

Por otra parte, es posible clasificar las excepciones en: i) excepciones contempladas por el lenguaje de programación y ii) excepciones definidas por el usuario. Un ejemplo clásico de excepción contemplada por el lenguaje aparecería cuando una instrucción trata de realizar una división por cero. En Python, está excepción está definida por ZeroDivisionError. Un ejemplo de excepción definida por el usuario podría contemplar el intento de almacenamiento de un número de teléfono que no tenga exactamente 9 dígitos. Con respecto a este último ejemplo, el usuario sería responsable de la definición de este nuevo tipo de excepción, del mismo modo que ocurriría con la definición de una nueva estructura de datos.

Atención

Cuando se manejan excepciones, existen tres tipos de operaciones representativas: lanzamiento de excepciones, captura de excepciones y manejo de excepciones. El lanzamiento se refiere a la capacidad del programador para disparar una excepción, que típicamente será recogida y manejada por otra parte del programa. La captura implica la detección explícita de una instrucción a nivel de código. Finalmente, el manejo está vinculado al código fuente definido para tratar la excepción previamente capturada.

Ejemplo de uso de excepciones en Python

En esta sección se muestra un sencillo ejemplo de uso de excepciones en Python. El objetivo no es el de profundizar sobre cómo se definen y manejan excepciones en Python. Al contrario, simplemente se pretende ejemplificar el concepto de excepción, introducido anteriormente, a través de este lenguaje.

En este sentido, el siguiente fragmento de código muestra cómo se puede obtener un número por teclado para, posteriormente, almacenarlo en una variable denominada valor. Después, se muestra el contenido de dicha variable.

>>> valor = int(input(“Introduzca un número...”)) Introduzca un número...7
>>> valor
7

Desafortunadamente, este código fallará cuando el usuario introduzca, por ejemplo, una cadena de texto. En este caso, el intérprete de Python estará esperando un valor (debido a la conversión a entero realizada), por lo que arrojará la excepción ValueError.

>>> valor = int(input(“Introduzca un número...”))
Introduzca un número...Ciudad Real
Traceback (most recent call last):
    File “<stdin>”, line 1, in <module>
ValueError: invalid literal for int() with base 10: ‘Ciudad Real’


En Python, como descubrirás más adelante con más detalle, es posible envolver un segmento de código para capturar las potenciales excepciones que puedan ocurrir. Para ello, puedes utilizar los bloques try-except. El siguiente fragmento de código captura y gestiona el posible error del usuario a la hora de introducir por teclado, en nuestro ejemplo anterior, algo que no sea un valor entero.

>>> try:
...    valor = int(input(“Introduzca un número...”))
... except ValueError:
...     print(“Debe introducir un número”)
...
Introduzca un número...Madrid
Debe introducir un número