I wish to catch an exception, modify the error message, and re-raise it.
There are two ways I know of to do this, with subtly different effects:

>>> def raise_example1():
...     try:
...             None()
...     except TypeError, e:
...             e.args = ('modified error message',) + e.args[1:]
...             raise e
... 
>>> def raise_example2():
...     try:
...             None()
...     except TypeError, e:
...             e.args = ('modified error message',) + e.args[1:]
...             raise
... 
>>> raise_example1()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 6, in raise_example1
TypeError: modified error message
>>> raise_example2()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 3, in raise_example2
TypeError: modified error message

Note how the line numbers in the traceback are different.

The behaviour I want is from raise_example2, but I'm not sure if this is
documented behaviour, or if it is something I can rely on. Is it acceptable
to modify an exception before re-raising it?


-- 
Steven

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to