[logic.error] # 19 Diagnostics library [[diagnostics]](./#diagnostics) ## 19.2 Exception classes [[std.exceptions]](std.exceptions#logic.error) ### 19.2.3 Class logic_error [logic.error] [🔗](#lib:logic_error) namespace std {class logic_error : public exception {public:constexpr explicit logic_error(const string& what_arg); constexpr explicit logic_error(const char* what_arg); };} [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L91) The classlogic_error defines the type of objects thrown as exceptions to report errors presumably detectable before the program executes, such as violations of logical preconditions or class invariants[.](#1.sentence-1) [🔗](#lib:logic_error,constructor) `constexpr logic_error(const string& what_arg); ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L105) *Postconditions*: strcmp(what(), what_arg.c_str()) == 0[.](#2.sentence-1) [🔗](#lib:logic_error,constructor_) `constexpr logic_error(const char* what_arg); ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L116) *Postconditions*: strcmp(what(), what_arg) == 0[.](#3.sentence-1)