[PyKDE] Handling exceptions in SIP
Denis S. Otkidach
ods at strana.ru
Fri Jul 1 07:55:30 BST 2005
On Thu, 30 Jun 2005 17:24:27 +0100
Phil Thompson <phil at riverbankcomputing.co.uk> 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.
--
Denis S. Otkidach
http://www.python.ru/ [ru]
More information about the PyQt
mailing list