On Sat, May 31, 2008 at 7:59 AM, Antoine Pitrou <[EMAIL PROTECTED]> wrote: > Mark Hammond <mhammond <at> skippinet.com.au> writes: >> In both Python 2.x and 3 (a few months old build of Py3k though), the >> traceback isn't the same. For Python 2.0 you could write it like: >> >> def handle_exception(): >> ... >> raise sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2] >> >> Its not clear how that would be spelt in py3k though (and from what I can >> see, sys.exc_info() itself has an uncertain future in py3k). > > sys.exc_info() will remain, it's just that the returned value will be (None, > None, None) if we are not in an except block in any of the currently active > frames in the thread. In the case above it would return the current exception > (the one caught in one of the enclosing frames). > > By the way, another interesting sys.exc_info() case: > > def except_yield(): > try: > raise TypeError > except: > yield 1 > > def f(): > for i in except_yield(): > return sys.exc_info() > > Right now, running f() returns (None, None, None). But with rewritten > exception > stacking, it may return the 3-tuple for the TypeError raised in > except_yield().
What exception stacking? I thought we'd be using a simple per-thread exception. I'd expect the yield statement to clear it, giving us (None, None, None). -- Adam Olsen, aka Rhamphoryncus _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com