C++ exceptions are quince and the backends' universal response to run-time errors. They are also the response to the following more normal conditions:
Deadlock is discussed further here, and connection issues here.
Quince and the backends do not log. Instead they pass any diagnostic messages
through the exceptions they throw. These all derive from std::exception
,
and override std::exception::what()
with a method that returns the message.
Here is a list of all the classes of exception that quince and the backends
throw. They are all in namespace quince
,
and defined in <quince/exceptions.h>
.
Class |
Base class |
Cause |
---|---|---|
|
|
Any exceptional condition that quince detects (see subclasses) |
|
|
A deadlock was detected. Not an error. |
|
|
Could not establish communication with a DBMS |
|
|
The connection to the DBMS was lost. |
|
|
Any error in the definition of a table (see subclasses) |
|
|
Use of an unmapped class member where a mapped member was required. |
|
|
Generated column name would exceed a DBMS-imposed limit |
|
|
Any error that prevents quince from forming a valid SQL statement (see subclasses) |
|
|
Illegal operation on an expression with no corresponding C++ type |
|
|
Illegal operation on a multi-column type |
|
|
Two databases referenced in one query |
|
|
Table modification based on a query that is not directly tied to a table |
|
|
Used a field from the wrong table |
|
|
Type that allows all NULLs used in the part of a join that gives another interpretation to all NULLs |
|
|
Any error that prevents quince from sending a well-formed SQL statement to the DBMS (see subclasses) |
|
|
Operation attempted on a DBMS that does not support it |
|
|
Illegal operation on a table in the closed state |
|
|
Illegal operation on a table in the open state |
|
|
Operation attempted on a DBMS that does not support it |
|
|
Use of a transaction that is not the current one |
|
|
Operation is illegal outside of a transaction |
|
|
Attempt to open a table with no primary key |
|
|
Any unexpected response from the DBMS to quince's request to execute an SQL statement (see subclasses) |
|
|
No output where output was expected |
|
|
Multi-row output where a sigle row was expected |
|
|
Column type information was missing from output |
|
|
Some data was missing from an output row |
|
|
Output data was not in the expected format |
|
|
Output indicates a column type that quince does not recognize |
|
|
Output data's type was not the expected type |
|
|
Output data's size was not the expected size |
|
|
Tried to open a table that already exists on the server, but with metadata that doesn't match expectations |
|
|
The DBMS reported an error |