[Python-Dev] Chained Exceptions
Brett C.
bac at OCF.Berkeley.EDU
Sat May 14 20:57:35 CEST 2005
Guido van Rossum wrote:
> [Brett C.]
>
>>Maybe, but as long as caught exceptions get cleared that should be an issue.
>>Would this be solved if, when an 'except' branch is exited, exceptions are
>>cleared? So, in the above example, once the 'pass' is hit in catchit() no
>>exception is considered active any longer. This could be done with a CLEAR_EXC
>>opcode very easily inserted at the end of an 'except' branch by the compiler.
>
>
> Sure, but that would be backwards incompatible.
Right. None of what I am discussing here I would expect to be implemented any
sooner than Python 3000.
> There's plenty of code
> that expects sys.exc_info() to continue to return the caught exception
> *outside* the except block. This is all incredibly tricky, to some
> extent for backwards compatibility reasons (please read the source
> code for maintaining the exc_info data!).
>
> In Python 3000, I think we can get rid of sys.exc_info() altogether
> once we place the traceback in the exception object as the 'traceback'
> attribute: if you want this info, all you need is write
>
> except SomeException, err:
> # now type is err.__class__, value is err, and traceback is
> err.traceback.
>
Right, that is kind of the end goal in my mind.
> If you want to have this with an "except:" clause, you can just catch
> 'Exception' or perhaps 'BaseException'. This isn't possible in Python
> 2.x since there's no single base class.
>
Right. Once again I am only thinking about Python 3000.
-Brett
More information about the Python-Dev
mailing list