Steven D'Aprano, 03.07.2010 06:35:
On Sat, 3 Jul 2010 11:39:07 am Greg Ewing wrote:
Stefan Behnel wrote:
So, would it still be Python if it folded

     1 + "1"

into

     raise TypeError()

at compile time?

It would have to be

     raise TypeError("Exactly the message that would have been
produced at run time")

Python doesn't make any guarantees about the message that exceptions
display, so I don't think you need to match the message, just the
exception. Anyone testing for specific exception messages is living in
a state of sin and shouldn't complain when their code stops working.

Yep, the Cython project keeps running into this all over the place. When we reimplement CPython functionality for performance reasons, we make sure we match the behaviour exactly, which usually means that we try to match the exceptions and their messages as well. Since we use doctests for our test suite, this means that we need to special case some Python versions in the test suite to make sure we test our code as good as possible without letting the tests break across CPython versions. This can be really tricky at times.

The general trend seems to be that modified exception messages become more exact and telling over time, so we tend to follow Python 3.x in our own choice of error messages.

Stefan

_______________________________________________
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