[PyQt] SIP default exception handler
Phil Thompson
phil at riverbankcomputing.com
Fri Oct 30 19:16:07 GMT 2009
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
More information about the PyQt
mailing list