20.6. Manejar errores

En todo momento hemos supuesto que las expresiones estaban bien formadas.

Por ejemplo, cuando alcanzamos el final de una subexpresion, suponemos que el carácter siguiente es un paréntesis cerrado. Si hay un error y el siguiente carácter es cualquier otra cosa, deber³amos ocuparnos de el.

   1: def obtieneNumero(listaToken):

   2:     if tomaToken(listaToken, '('):

   3:         x = obtieneSuma(listaToken)

   4:         if not tomaToken(listaToken, ')'):

   5:             raise 'ExpresionErronea', 'falta un par¶entesis'

   6:         return x

   7:     else:

   8:     # omitido el resto de la función

La sentencia raise crea una excepción; en este caso creamos un nuevo tipo de excepción, llamado ExpresionErronea. Si la función que llamo a obtieneNumero, o alguna de las otras funciones de la pila de llamadas, maneja la expresión, el programa podrá continuar. En caso contrario, Python imprimirá un mensaje de error y saldrá.

Como ejercicio, encuentre otros lugares de estas funciones donde
puedan ocurrir errores y añada las sentencias raise adecuadas.
Pruebe su código con expresiones formadas incorrectamente.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s