С++: Каково подходящее использование для исключения std:: logic_error?

Если вы используете исключение std:: logic_error в своем коде, в каком случае вы используете его для?

Ответ 1

logic_error является базой для этих исключений: domain_error, invalid_argument, length_error, out_of_range.

Все это логические ошибки: ошибки ошибочны во вводе, так что вывод будет нелогичным. Поэтому я бы сказал, что вам обычно не нужно использовать его напрямую, так как эти четыре охватывают любые логические ошибки, о которых я могу думать. Но это дает вам представление о том, что такое категория.

Ответ 2

Как уже указывал GMan, это прежде всего база для других классов исключений. Вы можете использовать его непосредственно для чего-то, что в основном является утверждением. Например. если какой-либо код зависит от конкретного объекта, который был сконструирован до его выполнения, ему может быть целесообразно выбрасывать logic_error (а не производную), если он выполняется, и этот объект еще не был создан.