This class defines the type of objects thrown as exceptions to report errors in the internal logical of the program, such as violation of logical preconditions or class invariants.
These errors are presumably detectable before the program executes.
It is used as a base class for several logical error exceptions, and is declared as: