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

Reply via email to