translating C++ exceptions to python

Denis S. Otkidach ods at strana.ru
Tue Jun 14 05:20:27 EDT 2005


On 13 Jun 2005 04:23:03 -0700
calin.hanchevici at gmail.com wrote:

> Hi all,
> 
> I have a C++ library I call from python. The problem is I have c++
> exceptions that i want to be translated to python. I want to be able to
> do stuff like:
> try:
>     my_cpp_function()
> except cpp_exception_1:
>     do_stuff
> except cpp_exception_2:
>     do_other_stuff
> 
> any ideas how can i do the translation?

1. Create Python class for your exception.  For simple case the code
will be:

static PyObject *YouExceptionClass;

# and in module initialization function:
YouExceptionClass =  PyErr_NewException("YourModule.YourException", 0, 0);

2. Add it to module dictionary.

3. In wrapper for my_cpp_function use something like the following 
code:

try {
    my_cpp_function_impl();
} catch (YouException &exc) {
    PyErr_SetString(YouExceptionClass, exc.what());
    return 0;
}

-- 
Denis S. Otkidach
http://www.python.ru/      [ru]



More information about the Python-list mailing list