On Tuesday 07 June 2005 2:15 pm, Denis S. Otkidach wrote: > On Tue, 7 Jun 2005 13:30:29 +0100 (BST) > > "Phil Thompson" <[EMAIL PROTECTED]> wrote: > > Ok. How about this... > > > > %Exception MyException - will be used with an externally defined > > exception. (Note, you will not be able to specify a base exception, but > > why would you want to?) > > > > %Exception MyException(Base) - will be used to specify a derived > > exception. SIP will recognise "Exception" as the standard Python > > exception, eg. > > > > %Exception MyBase(Exception) > > > > %Exception MyException(MyBase) > > Looks a bit tricky, but it suites all possible cases I think. Let it be > so. > > > Or maybe an empty base exception should be interpreted as the standard > > Python exception, eg. > > > > %Exception MyBase() > > > > ??? > > It doesn't matter for me. > > > > Exactly. Calling PyErr_SetString etc. is quite convenient for > > > extension module authors vs. returning initialized exception instance. > > > > So we have... > > > > %RaiseCode > > // Raise a Python exception. sipCpp will be the C++ pointer, > > // sipException_MyException will be the exception type (unless the > > // exception was defined externally). > > PyObject *val = PyObject_CallFunction(sipException_MyException, > > "S", sipCpp->what()); > > > > PyErr_SetObject(sipException_MyException, val); > > %End > > In most cases it will be even simplier: > > %RaiseCode > PyErr_SetString(sipException_MyException, sipCpp->what()); > %End
Support for this is in tonight's snapshot - some changes to what I described above, but nothing sigificant. Support for converting Python exceptions to C++ exceptions in Python re-implementations of C++ virtuals not yet implemented. This hasn't been tested - feedback please. Phil _______________________________________________ PyKDE mailing list [email protected] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
