Exception(Error) Handling¶
Quo internally uses exceptions to signal various error conditions that the user of the application might have caused. Primarily this is things like incorrect usage.
Where are Errors Handled?
¶
Quo’s main error handling is happening in BaseCommand.main()
. In
there it handles all subclasses of Outlier
as well as the standard EOFError
and KeyboardInterrupt
exceptions. The
latter are internally translated into a Abort
.
The logic applied is the following:
If an
EOFError
orKeyboardInterrupt
happens, reraise it asAbort
.If an
Outlier
is raised, invoke theOutlier.show()
method on it to display it and then exit the program withOutlier.exit_code
.If an
Abort
exception is raised print the stringAborted!
to standard error and exit the program with exit code1
.if it goes through well, exit the program with exit code
0
.
Which Exceptions Exist?
¶
Quo has two exception bases: Outlier
which is raised for
all exceptions that quo wants to signal to the user and Abort
which is used to instruct quo to abort the execution.
A Outlier
has a show()
method which
can render an error message to stderr or the given file object. If you
want to use the exception yourself for doing something check the API docs
about what else they provide.
The following common subclasses exist:
UsageError
to inform the user that something went wrong.BadParameter
to inform the user that something went wrong with a specific parameter. These are often handled internally in quo and augmented with extra information if possible. For instance if those are raised from a callback quo will automatically augment it with the parameter name if possible.FileError
this is an error that is raised by theFileType
if quo encounters issues opening the file.ValidationError
if quo encounters issues validating an input.