Why throws, on a method, is part of its signature? It seems strange to include it. Here is an example where it is in the way: If anyone were to see this method from the outside, they might try to use it without knowing that it is not supported. They would only learn it on trying to run the code.