Это в некоторой степени зависит от того, что вы хотите, чтобы программа делала, когда задан неправильный ответ.
Если это на 100% критично, и программа никогда не должна работать в таком случае, выведите исключение.
Если вызывающая сторона должна правильно обработать ее и продолжить выполнение программы, вы можете сделать любую из них, но я лично предпочитаю # 2. Почему?
Отличное обсуждение исключений для обработки ошибок: здесь - оно не касается непосредственно исключений и кодов возврата, но очень ясный список недостатков критики проверенных исключений также применим к этому обсуждению , это предполагает, что ошибка, которую вы обрабатываете, не является сверхкритической, что должно привести к завершению программы, и в этом случае непроверенное исключение является правильным).