Re-raising exceptions with modified message

Christoph Zwerschke cito at
Sun Jul 15 11:16:24 CEST 2007

Christoph Zwerschke wrote:
> Here is a simple solution, but it depends on the existence of the args 
> attribute that "will eventually be deprecated" according to the docs:

Ok, here is another solution that does not depend on args:

def PoliteException(e):
     E = e.__class__
     class PoliteException(E):
         def __init__(self):
             for arg in dir(e):
                 if not arg.startswith('_'):
                     setattr(self, arg, getattr(e, arg))
         def __str__(self):
             return str(e) + ", sorry!"
     PoliteException.__name__ = E.__name__
     return PoliteException()

except Exception, e:
     p = PoliteException(e)
     assert p.reason == e.reason
     raise p

More information about the Python-list mailing list