module interfaces must declare new types of exceptions? or must declare all thrown exceptions???
language designers complain about exceptions, but what are the alternatives?