Исключение не является хорошим решением.Исключения предназначены для обработки исключительных событий, позволяя разработчикам чистить поток управления ниже пресловутого коврика, обеспечивая при этом уничтожение любых объектов в процессе.
В зависимости от вашего сценария вы пытаетесь обрабатывать только ожидаемые события.Что еще более важно, эти события являются ключевой частью вашего потока управления.Следовательно, нет смысла пытаться скрыть важную часть вашего счастливого пути.
Тем не менее, стандартный C ++ действительно включает в себя стандартные исключения, разработанные для представления исключений, вызванных логическими ошибками (т. Е. std::logic_error
), которые включаютспециализации для значений за пределами (т. е. std::domain_error
, std::length_error
и std::out_of_range
), а также недопустимых аргументов (т. е. std::invalid_error
).Однако имейте в виду, что эти исключения предназначены для представления исключительных событий, а не для вашего основного потока управления.