Ouch. Any possible exception that might be thrown by you needs to be listed in your interface, because it's a possible "return value". In addition, you also need to list every single
interface that you use, because your caller might need to look up their
interfaces to see which exceptions they might throw.
To recap, exceptions most definitely are part of the interface spec.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?