Это действительно зависит от того, как вы видите, как это используется.
Я бы не стал создавать API, который использовал бы исключения для "нормальных" действий. Если в вашем API не очевидно, требуется ли проверка заранее, я думаю, что встраивание проверок непосредственно в API вместе с чистым способом проверки этого заранее предпочтительнее исключений.
Если, однако, заранее очевидно, требуется ли валидация или нет, я бы попытался встроить ее в API (то есть: заставить вызовы метода требовать передачи информации валидации). Это предотвратит необходимость в исключениях в большинстве случаев. При необходимости вы можете вызвать исключение.
В общем, я настоятельно рекомендую рассматривать исключения как «исключительные», а не как механизм управления потоком. Пользователь не должен иметь для обработки исключений, чтобы эффективно использовать ваш API.