Для обработки ошибок логики в программе на C++ используется стандартный класс std::logic_error. Этот класс является базовым для других классов исключений, связанных с логическими ошибками, таких как std::domain_error, std::invalid_argument и std::out_of_range.
std::runtime_error используется для ошибок, возникающих во время выполнения программы, а std::exception — это базовый класс для всех стандартных исключений.
std::bad_alloc используется для ошибок, связанных с выделением памяти.
Правильный вариант: std::logic_error