[Python-Dev] with_traceback (original) (raw)
Guido van Rossum guido at python.org
Thu Mar 1 03:10:21 CET 2007
- Previous message: [Python-Dev] with_traceback
- Next message: [Python-Dev] with_traceback
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I am beginning to think that there are serious problems with attaching the traceback to the exception; I really don't like the answer that pre-creating an exception is unpythonic in Py3k.
On 2/28/07, Jean-Paul Calderone <exarkun at divmod.com> wrote:
On Wed, 28 Feb 2007 18:29:11 -0700, Adam Olsen <rhamph at gmail.com> wrote: >On 2/28/07, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote: >> Adam Olsen wrote: >> >> > It sounds like we should always copy the exception given to raise, >> >> I don't like that either, for all the reasons that >> make it infeasible to copy an arbitrary object in a >> general way. > >Exceptions aren't arbitrary objects though. The requirement that they >inherit from BaseException is specifically to create a common >interface. Copying would be an extension of that interface. > >I believe calling copy.copy() would be sufficient. >
Does copying every exception given to `raise' solve the problem being discussed here? Consider the current Python behavior: no copying is performed, most code instantiates a new exception instance for each raise statement, some code creates a single exception and re-raises it repeatedly. And the new behavior? Every raise statement copies an exception instance, some code will create a new exception instance for each raise statement, some code will create a single exception and re-raise it repeatedly. That doesn't sound like an improvement to me. Normal code will be more wasteful. Code which the author has gone out of his way to tune will be as wasteful as /average/ code currently is, and more wasteful than tuned code now is. Plus you now have the added mental burden of keeping track of which objects are copies of what (and if you throw in the refcount=1 optimization, then this burden is increased - was something accidentally relying on copying or non-copying? Did a debugger grab a reference to the exception object, thus changing the programs behavior? Did a third-party hang on to an exception for longer than the raising code expected? etc). Jean-Paul
Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] with_traceback
- Next message: [Python-Dev] with_traceback
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]