[PyQt] SIP default exception handler

Sébastien Petitdemange sebastien.petitdemange at esrf.fr
Mon Nov 2 09:52:58 GMT 2009


Phil Thompson wrote:
> On Thu, 29 Oct 2009 10:08:33 +0100, Sébastien Petitdemange
> <sebastien.petitdemange at esrf.fr> wrote:
>> Hi,
>>
>> 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 (...) {
>>       sipRaiseUnknownException();
>>   }
> 
> I've added support for a /Default/ exception annotation in tonight's
> snapshot. Untested - let me know if it's not quite right.
> 
> Phil
> 

Thanks a lot, I'll test that and let you know.

SEB
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sebastien_petitdemange.vcf
Type: text/x-vcard
Size: 218 bytes
Desc: not available
Url : http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20091102/4042c6c8/sebastien_petitdemange.vcf


More information about the PyQt mailing list