As a quick review, Python exceptions are objects derived from the BaseException class, though user-defined exceptions should be derived from Exception. An exception ...
As well as passing exceptions raised by other functions back to the Python system, you can also quite easily raise exceptions directly using; void PyErr_SetString(PyObject *type, const char *message) ...