It is a logic error exception. It reports errors that are a consequence of faulty logic within the program such as violating logical preconditions or class invariants and may be preventable.
Following is the declaration for std::logic_error.
No-throw guarantee − no members throw exceptions.
constructor − what_arg has the same content as the value returned by member what.
what − It is used to get string identifying exception.