Steven D'Aprano writes:
2) PEP 3107 only specifies arguments and return values but not exceptions that can be raised by a function. Java has the "throws" syntax to list possible exceptions:
public void readFile() throws IOException {}
I understand that this is called a "checked exception" in Java. I also understand that they are hated and derided
Sure, but that's because it's hard for a human to guess what might happen down in lower-level functions, let alone 3rd-party libraries and the runtime -- and your program fails if you guess wrong. Maybe the fact that type-checking is going to be optional mitigates that. I suspect it's not terrible useful, but another idea is to invert the sense, i.e. say what exceptions the function believes it handles, and therefore cannot be raised.
Perhaps with a few years of experience, we might be able to extend this to exceptions without making the same mistakes as Java's checked exceptions, but I wouldn't rush into it.
+1 to that!