On 24 Apr, 15:00, Christian Heimes <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] schrieb: > : > > > class ReraisedException(Exception): > > def __init__(self, message, exc_info): > > Exception.__init__(self, message) > > self.inner_exception = exc_info > > > try: > > try: > > import does_not_exit > > except ImportError: > > raise ReraisedException("Something wrong", sys.exc_info() ) > > except ReraisedException, e: > > ... # here you can use e.inner_exception > > except: > > This may lead to reference cycles, please > readhttp://docs.python.org/dev/library/sys.html#sys.exc_info > > Christian- Nascondi testo tra virgolette - > > - Mostra testo tra virgolette -
Thanks. I was not aware of that (Last time I read that section, the warning was not there). I usually do something like that in my scripts: try: do_something() except: err, detail, tb = sys.exc_info() print err, detail traceback.print_tb(tb) According to the document you linked to, also this causes circular reference, although in my case it is ininfluent , since I usually do it only before exiting a program after a fatal error. However, this seems like a dark spot in the implementation of CPython. Do you now if this has/will be cleaned in Python 3.x ? I'd like to see a 'print_tb' method in the exception class, so that I could do something like this: try: do_something() except Exception, e : # I know, in python 3.0 the syntax will be different print e e.print_tb() Ciao ------- F.B. -- http://mail.python.org/mailman/listinfo/python-list