SIP uses the deprecated throw(...) annotation in order to determine
which exceptions may be thrown by c++ code. Without these, only
a generic unknown exception is throw, which is of limited value
to Python code (losing any valuable message and exception type).
So we add a new SIP_THROW macro, which can be added to method's
declaration:
bool doSomething() SIP_THROW( QgsCsException );
This is ignored outside of sipify, so we don't actually use
the deprecated c++ throw annotations, but sipify picks it up
and adds the appropriate change to the sip definition for
the method:
bool doSomething() throw( QgsCsException );
This means that calling the method from Python will raise
the QgsCsException instead of a generic exception.