Python: exceptions handling (II)

>>> while True:
...     try:
...         x = int(input("Por favor ingrese un número: "))
...         break
...     except ValueError:
...         print("Oops! No era válido. Intente nuevamente...")
...

La declaración try funciona de la siguiente manera:

  • Primero, se ejecuta el bloque try (el código entre las declaración try y except).
  • Si no ocurre ninguna excepción, el bloque except se saltea y termina la ejecución de la declaración try.
  • Si ocurre una excepción durante la ejecución del bloque try, el resto del bloque se saltea. Luego, si su tipo coincide con la excepción nombrada luego de la palabra reservada except, se ejecuta el bloque except, y la ejecución continúa luego de la declaración try.
  • Si ocurre una excepción que no coincide con la excepción nombrada en el except, esta se pasa a declaraciones try de más afuera; si no se encuentra nada que la maneje, es una excepción no manejada, y la ejecución se frena con un mensaje como los mostrados arriba.

 

La declaración raise permite al programador forzar a que ocurra una excepción específica.

>>> try:
...     raise NameError('Hola')
... except NameError:
...     print('Voló una excepción!')
...     raise
...
Voló una excepción!
Traceback (most recent call last):
  File "<stdin>", line 2, in ?
NameError: Hola

 

Para acceder a la información de contexto estando dentro de un bloque except existen dos alternativas. Se puede utilizar la función exc_info del módulo sys. Esta función devuelve una tupla con información sobre la última excepción atrapada en un bloque except. Dicha tupla contiene tres elementos: el tipo de excepción, el valor de la excepción y las llamadas realizadas.

Otra forma de obtener información sobre la excepción es utilizando la misma sentencia except, pasándole un identificador para que almacene una referencia a la excepción atrapada.

try:
    # código que puede lanzar una excepción
except Exception, ex:
    # procesamiento de la excepción cuya información
    # es accesible a través del identificador ex

 

SOURCEhttp://docs.python.org.ar/tutorial/3/errors.html & http://librosweb.es/libro/algoritmos_python/capitulo_12/excepciones.html
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s