On 1/27/2012 2:54 PM, Guido van Rossum wrote:
On Fri, Jan 27, 2012 at 9:08 AM, Ethan Furman<et...@stoneleaf.us>  wrote:
Guido van Rossum wrote:

Did you consider to just change the
words so users can ignore it more easily?


Yes, that has also been discussed.

Speaking for myself, it would be only slightly better.

Speaking for everyone that wants context suppression (using Steven
D'Aprano's words):  chained exceptions expose details to the caller that are
irrelevant implementation details.

Especially if the users are non-programmer app users.

It seems to me that generating the amount of information needed to track
down errors is a balancing act between too much and too little; forcing the
print of previous context when switching from exception A to exception B
feels like too much:  at the very least it's extra noise; at the worst it
can be confusing to the actual problem.  When the library (or custom class)
author is catching A, saying "Yes, expected, now let's raise B instead", A
is no longer necessary.

I find double tracebacks to be 'jarring'. If there is a double bug, one in both the try and except blocks, it *should* stand out. If there is just one bug and the developer merely wants to rename it and change the message, it should not.

Also, the programmer is free to *not* use 'from None', leaving the complete
traceback in place.

Ok, got it. The developer has to explicitly say "raise<something>
from None" and that indicates they have really thought about the issue
of suppressing too much information and they are okay with it. I dig
that.

Now that I have been reminded that 'from x' was already added to raise statements, I am fine with reusing that. I still think it 'sticks out' more than the 'as' version, but when reading code, having (rare) info suppression stick out is not so bad.

The PEP does not address the issue of whether the new variation of raise is valid outside of an except block. My memory is that it was not to be and I think it should not be. One advantage of the 'as' form is that it is clear that raising the default as something else is invalid if there is no default.

--
Terry Jan Reedy

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to