必须在Python代码的边界捕获所有C ++异常。 这个边界是C ++遇
到Python的地方。 Boost.Python提供了一个默认的异常处理程序,用于转换选定的标准异常,然后放弃:
raise RuntimeError, 'unidentifiable C++ Exception'
用户可以提供自定义翻译。 这是一个例子:
struct PodBayDoorException;
void translator(PodBayDoorException const& x) {
PyErr_SetString(PyExc_UserWarning, "I'm sorry Dave...");
}
BOOST_PYTHON_MODULE(kubrick) {
register_exception_translator<
PodBayDoorException>(translator);