[pyar] Mensaje de exepción

Alejandro Santos listas en alejolp.com
Vie Sep 30 18:25:31 ART 2011


2011/9/28 Daniel <dmlistapython en gmail.com>:
>
> raise PrinterException("Imposible establecer comunicación.", e)
>
> ¿cómo accedo al mensaje "imposible establecer comunicación" desde el
> bloque try que la ocasiona?
>

Cuando me encuentro con este problema, donde no sé que nombre de campo
usar, uso la función dir(x) que devuelve una lista de (casi*) todos
los elementos del objeto:

>>> try:
...     raise Exception("Hola")
... except Exception, e:
...     print dir(e)
...
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__getitem__', '__getslice__', '__hash__',
'__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__setstate__', '__sizeof__', '__str__',
'__subclasshook__', '__unicode__', 'args', 'message']

Entre la lista de resultados, me quedo solo con los que no empiezan
con "__": ['args', 'message']. Probando con "message" genera un
warning:

>>> e.message
__main__:1: DeprecationWarning: BaseException.message has been
deprecated as of Python 2.6
'Hola'

Entonces me fijo con args:

>>> e.args
('Hola',)

[*] por ejemplo si el objeto redefine __getattr__,
http://docs.python.org/library/functions.html#dir

-- 
Alejandro Santos



More information about the pyar mailing list