
[...]
I don't understand that. What is a "spurious" traceback? And how are you going to get one if the current traceback is empty?
I was imagining that the default mechanism for printing tracebacks would always try to follow the chain of tracebacks, and report not just the traceback, but also the exception that was replaced. There's a lot of C code out there that catches e.g. AttributeError and replaces it with a more specific error (e.g. BifurcationError("can't bifurcate the sploorg") replacing AttributeError("__bifurcate__"). I think this would cause end user confusion.
Isn't the new sys.exc_clear() usable for that? (I.e. raising a fresh exception without any chained ones?)
But that's backwards incompatible, in the sense that currently you don't need to call exc_clear() unless under very special circumstances. --Guido van Rossum (home page: http://www.python.org/~guido/)