Re-raising exceptions with modified message
Neil Cerutti
horpner at yahoo.com
Thu Jul 5 10:53:39 EDT 2007
On 2007-07-05, Christoph Zwerschke <cito at online.de> wrote:
> Thomas Heller wrote:
>> I have the impression that you do NOT want to change the
>> exceptions, instead you want to print the traceback in a
>> customized way. But I may be wrong...
>
> No, I really want to modify the exception, supplementing its
> message with additional information about the state of the
> program.
>
> The use case are compiled Kid templates
> (http://kid-templating.org). If an error occurs, I want to add
> the corresponding line number of the XML file as information
> for the template developer. Since the final error handling may
> happen somewhere else (e.g. by TurboGears importing a Kid
> template), I do not want to modify trackeback handling or
> something.
The documentation for BaseException contains something that might
be relevant:
[...] If more data needs to be attached to the exception,
attach it through arbitrary attributes on the instance. All
arguments are also stored in args as a tuple, but it will
eventually be deprecated and thus its use is discouraged. New
in version 2.5. [...]
I don't know if something like the following would help:
>>> def foo():
... try:
... 12/0
... except ZeroDivisionError, e:
... e.my_info = "Oops!"
... raise
...
>>> try:
... foo()
... except ZeroDivisionError, e:
... print e.my_info
...
Oops!
Users could get at the extra info you attached, but it wouldn't
be automatically displayed by the interpreter.
--
Neil Cerutti
Symphonies of the Romantic era were a lot longer in length. --Music Lit Essay
More information about the Python-list
mailing list