Depurando en Python

Cuando mencionamos depuración o debugging, quiere decir que es posible que haya un bug en el camino. Para el que no sepa que es un bug, solemos llamar bug a los errores que pueda tener una aplicación. Antes de avanzar con este tutorial, vamos a sentar las bases de los términos que vamos a utilizar en este artículo: bug y depuración.

Bugs

Un bug en computación puede ocurrir tanto en el entorno de software, como en el de hardware, pero nuestra atención lo centraremos en el software. Permíteme que mencione rápidamente una leyenda que según, narra el origen de la palabra bug (bicho en español). Se cree que el primer uso del término bug en computación fue cuando se encontró un bicho real (una polilla) en uno de los relés de la computadora Mark II. El término bug también se utilizó a finales del siglo XIX para describir ciertos problemas técnicos.

Los bugs en software hacen que el programa produzca un comportamiento no deseado. Es un término comúnmente utilizado para referirse a un error del que se desconoce su ubicación y su razón, y algunos pueden causar graves problemas (por ejemplo, el crasheo de un programa).

En esta situación, es cuando la depuración entra en juego.

Depuración

Bueno, se podría decir que la mejor manera de evitar cualquier problema es no generar errores. Pero esto, por desgracia, es bastante raro, y no es sencillo generar un programa de limpieza desde el principio. Tener errores es el día a día de un programador.

La depuración es el proceso de localizar, analizar y corregir cualquier bug (error) que exista en la plataforma. El objetivo final de la depuración es eliminar tales errores, y producir un programa que se ejecute y se comporte como nosotros esperamos. Es importante señalar que la mayor parte del tiempo se gasta en localizar el fallo, ya que, como hemos mencionado anteriormente, se desconoce la localización de los bugs de un primer vistazo.

Gestionando errores de Python

Una excepción es un objeto que indica que tenemos un bug (error). En otras palabras, Python utiliza las excepciones con el fin de comunicarnos que existen errores en el programa. Esta sería la parte de localización en el proceso de depuración. Recibir el objeto excepción y realizar las acciones necesarias para tratar con el error hacen referencia a la gestión de errores. Este sería el análisis y los pasos correctos en el proceso de depuración.

La declaración try

La declaración try de Python se utiliza para gestionar excepciones y cuenta con dos formas: try/except y try/finally. En el primer caso, la cláusula try puede ir seguida de una o más cláusulas de excepción, mientras que en el segundo caso, solo puede ir seguida de una cláusula.

Try/except

La sintaxis de try/except sería así:

try:
    # try block code
except:
    # except block code

El cuerpo de la cláusula try contendrá código que podría generar una excepción, a condición de que si se genera una excepción, todas las instrucciones del bloque se omiten. Por otra parte, el cuerpo de la cláusula except es llamada el gestor de excepciones, ya que se utiliza para detectar excepciones. El bloque de código del except sólo se ejecuta si se genera una excepción, de lo contrario se saltará el bloque.

Vamos a ver un ejemplo para que veas las cosas más claras. No has pedido que introduzcamos un denominador en una división. Dado que no está permitido dividir por cero, vamos a escribir un try/except que compruebe si existe una división por cero, y que imprima un mensaje si se ha producido este error.

denominator = input('Enter a denominator value: ')
try:
    formula = 15/denominator
    print 'The result is ' + str(formula)
except ZeroDivisionError:
    print 'You attempted to divide by zero which is not allowed'

Si el valor introducido es 5, obtendrás la siguiente salida:

The result is 3

Ahora, intenta introducir el número 0. ¿Qué te muestra por pantalla?

Try/finally

try/finally es otra manera de escribir la declaración try en Python. Las cláusulas finally también son llamadas cláusulas clean-up/termination ya que siempre se ejecutan independientemente de que se haya producido una excepción en el bloque try.

Echa un vistazo al código de abajo donde se hace uso de la cláusula finally

denominator = input('Enter a denominator value: ')
try:
    formula = 15/denominator
    print 'The result is ' + str(formula)
finally:
    print 'You attempted to divide by zero which is not allowed'

Fíjate en que si introduces el valor 5, por ejemplo, obtendrás el siguiente resultado:

The result is 3
You attempted to divide by zero which is not allowed

Y esto sería lo básico para gestionar errores con Python. En posteriores entregas hablaremos de la instrucción raise y del módulo traceback. ¡Feliz código!

Fuente: Abder-Rahman Ali

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP