Использование floating-point типов, таких как double, для исключений не рекомендуется по нескольким причинам:
double могут иметь ошибки округления из-за особенностей их внутреннего представления в виде числа с подвижной запятой. При сравнении исключений это может привести к ложным срабатываниям или пропущенным ошибкам.double не имеет явной семантики для обозначения конкретного типа ошибки. Исключения должны четко сообщать, что именно произошло, что облегчает обработку и отладку.std::exception. Это более читабельный, расширяемый и безопасный подход.Вместо double для исключений следует использовать:
std::runtime_error, std::logic_error).std::exception, для представления специфических ошибок.cpp