On Mar 2, 2020, at 08:40, Soni L. <fakedme...@gmail.com> wrote:
> 
> All operations on None should raise a NoneError,

So every function in every type implemented in C or in Python, whether part of 
Python or third-party, that has code like this:

    if not isisntance(arg, numbers.Integral):
        raise TypeError(f"can only spam integers, not '{arg!r}'")

… has to change to test if arg is None and raise a different error. Otherwise, 
you’re not going to catch the error from + in your example if g.foo(h) is None.

> which should be a TypeError for backwards compatibility.

But the most common errors caused by not checking for None are AttributeError. 
If you turn these into a subclass of TypeError, that won’t be backward 
compatible. Others are ValueError, and that won’t be backward compatible either.

> we can then look into merging the proposals of None-aware operators and 
> Exception-aware operators such that the Exception-aware operators fallback to 
> NoneError if no exception type is provided.

How are you going to provide an exception type for most of the None-aware 
operators? For example, in a?[b][c]?[d], where do the exception types go? 
Without solving that, how do you merge the two proposals?

> we should also look into making "except" default to using NoneError instead 
> of BaseException, with a future flag.

Why? That sounds like a terrible idea. Most uses of bare except are bad code, 
but that doesn’t mean spuriously breaking all of that code and forcing people 
to deal with a problem that may never have come up in their production code is 
a good idea. And meanwhile, the good uses of bare except—quick&dirty code at 
the REPL, exception handlers that access the current exception through other 
means, etc.—would all break. And what code would benefit?
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/656LDHVFVSAKZ4YDZJYA7GKSJ342UUII/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to