if you throw a no-such-exception, you need to provide a hasOption() method