Информация об изменениях

Сообщение Re[4]: Какое стандартное исключение кинуть? от 14.02.2025 14:44

Изменено 14.02.2025 14:50 пффф

Re[4]: Какое стандартное исключение кинуть?
Здравствуйте, m2user, Вы писали:

П>>Пока склоняюсь к range_error


M>Почему именно range_error (std::runtime_error), а не out_of_range (std::logic_error)?


Моё поведение у меня ассоциируется с обращением по недопустимому адресу в ОС, это мне кажется больше похоже на runtime_error, а не logic_error. Хотя, насчет out_of_range тоже подумываю
Re[4]: Какое стандартное исключение кинуть?
Здравствуйте, m2user, Вы писали:

П>>Пока склоняюсь к range_error


M>Почему именно range_error (std::runtime_error), а не out_of_range (std::logic_error)?


Моё поведение у меня ассоциируется с обращением по недопустимому адресу в ОС, это мне кажется больше похоже на runtime_error, а не logic_error. Хотя, насчет out_of_range тоже подумываю

Хотя, глянул range_error:

Defines a type of object to be thrown as exception. It can be used to report range errors (that is, situations where a result of a computation cannot be represented by the destination type).


И out_of_range:

Defines a type of object to be thrown as exception. It reports errors that are consequence of attempt to access elements out of defined range.


По идее да, надо кидать out_of_range. Но смотрю std::stoull:

Exceptions

std::invalid_argument if no conversion could be performed.
std::out_of_range if the converted value would fall out of the range of the result type or if the underlying function (std::strtoul or std::strtoull) sets errno to ERANGE.


Хотя, по идее, должна кидать как раз range_error