Error handling

When an error or an unexpected event occurs during a Hawkey routine, an exception is raised:

  • if it is a general error that could be common to other Python programs, one of the standard Python built-in exceptions is raised. For instance, IOError and TypeError can be raised from Hawkey.
  • programming errors within Hawkey that cause unexpected or invalid states raise the standard AssertionError. These should be reported as bugs against Hawkey.
  • programming errors due to incorrect use of the library usually produce hawkey.ValueException or one of its subclasses, QueryException (poorly formed Query) or ArchException (unrecognized architecture).
  • sometimes there is a close call between blaming the error on an input parameter or on something else, beyond the programmer’s control. hawkey.RuntimeException is generally used in this case.
  • hawkey.ValidationException is raised when a function call performs a preliminary check before proceeding with the main operation and this check fails.

The class hierarchy for Hawkey exceptions is:

+-- hawkey.Exception
     +-- hawkey.ValueException
     |    +-- hawkey.QueryException
     |    +-- hawkey.ArchException
     +-- hawkey.RuntimeException
     +-- hawkey.ValidationException