[PyQt] SIP default exception handler

Sébastien Petitdemange sebastien.petitdemange at esrf.fr
Thu Oct 29 09:08:33 GMT 2009


We are developing a C++ library that uses a single exception class
(Exception) for throwing errors.

When wrapping the library with sip, we use the -e command line to
activate the try/catch code on each C++ call.

However, our C++ code does not include the "throw(Exception)" modifier
on each class method, because virtually any method can throw this
exception, and it would be quite heavy to add it on every declaration.

In this scenario, sip (v4.7.9) just include a default try {} catch (...)
{ sipRaiseUnknownException }, so Python reports "Exception: Unknown".

Is there a way to specify a default exception handler to sip, so the
generated code in this case would like something like:

  try {
      // C++ call
  } catch (OurDefaultException& e) {
      sipRaiseClassException(sipclass_OurDefaultException ... );
  } catch (...) {

Thanks you very much in advance.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: sebastien_petitdemange.vcf
Type: text/x-vcard
Size: 210 bytes
Desc: not available
Url : http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20091029/15a3218d/sebastien_petitdemange.vcf

More information about the PyQt mailing list