Alex Popescu wrote: > Probably the simplest solution would be to create a new exception and > wrapping the old one and the additional info. Unfortunately, this > may have a huge impact on 3rd party code that was catching the > original exception. So, I think you should create an utility > factory-like function that is either creating a new exception > instance as the one caught and with the additional information,
Right, I have gone with that (see the example with the PoliteException class somewhere below). > or an utility that knows how to modify the caught exception according > to its type. I guess you mean something like this (simplified): except Exception, e: if getattr(e, 'reason'): e.reason += "sorry" else: e.message += "sorry" The problem is that these attribute names are not standardized and can change between Python versions. Not even "args" is sure, and if a class has "message" it does not mean that it is displayed. Therefore I think the first approach is better. > In the first case you will need somehow to tell to the new instance > exception the real stack trace, because by simply raising > a new one the original stack trace may get lost. Yes, but thats a different problem that is easy to solve. -- Chris -- http://mail.python.org/mailman/listinfo/python-list