On 2/9/07, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
> At 05:03 PM 2/9/2007 -0800, Guido van Rossum wrote:
> >On 2/9/07, Collin Winter <[EMAIL PROTECTED]> wrote:
> > > sys.exc_info() will be kept, while the sys.exc_{type,value,traceback}
> > > attributes will be dropped.
> >
> >I understand why, but that doesn't make me uncomfortable with keeping
> >it. Maybe in "3.0 compatibility mode" 2.6 could attach tracebacks to
> >exception objects so we could be weened off it in 2.6?
>
> I notice that neither PEP addresses PEP 343 compatibility. Do we plan to
> make __exit__() only get one argument? Right now the protocol demands all
> three. I suppose we could pass one argument in 3.0, and if you want to
> support 2.6 you would have to add default arguments. Such code would be
> ugly as sin, but workable.
Couldn't __exit__() be passed (type(e), e, e.__traceback__) instead of
*sys.exc_info()? That is, the source translation given in PEP 343
becomes
mgr = (EXPR)
exit = mgr.__exit__ # Not calling it yet
value = mgr.__enter__()
exc = True
try:
try:
VAR = value # Only if "as VAR" is present
BLOCK
except Exception as e:
# The exceptional case is handled here
exc = False
if not exit(type(e), e, e.__traceback__):
raise
# The exception is swallowed if exit() returns true
finally:
# The normal and non-local-goto cases are handled here
if exc:
exit(None, None, None)
Collin Winter
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com