On Friday 01 July 2005 7:55 am, Denis S. Otkidach wrote: > On Thu, 30 Jun 2005 17:24:27 +0100 > > Phil Thompson <[EMAIL PROTECTED]> wrote: > > > 4) There are several standard exceptions which I always have to catch. > > > Now I have a macro for them: > > > > > > #define CATCH_STD_EXCEPTIONS \ > > > catch (std::bad_alloc&) {\ > > > PyErr_NoMemory(); \ > > > sipIsErr = 1; \ > > > } catch (std::exception &exc) {\ > > > PyErr_SetString(PyExc_RuntimeError, exc.what()); \ > > > sipIsErr = 1; \ > > > } catch (...) {\ > > > PyErr_SetString(PyExc_RuntimeError, "unknown"); \ > > > sipIsErr = 1; \ > > > } > > > > > > used in %MethodCode: > > > > > > %MethodCode > > > try { > > > sipRes = someMethod(...); > > > } CATCH_STD_EXCEPTIONS // sipIsErr - this comment is important hint > > > to SIP! %End > > > > If your point is the need for the comment, then yes - consider it a > > feature. > > No, I meant these exceptions must be caught almost everywhere. So I > have to add %MethodCode to almost every method, which is annoying. The > latest release of SIP always catch all exceptions with "catch(...)" > clause with -e option, but now it doesn't.
If we solve the problem of how to specify "..." then you could define std::bad_alloc, std::exception, and (somehow) "..." using %Exception and then... void foo() throw (std::bad_alloc, std::exception, ...); If this is too much trouble, then I can only suggest implementing something like %DefaultExceptionHandler than contains your code and is applied to anything that has no throw specifier (so long as the -e option is used). Phil _______________________________________________ PyKDE mailing list PyKDE@mats.imk.fraunhofer.de http://mats.imk.fraunhofer.de/mailman/listinfo/pykde