Все исключения C++ должны быть застигнуты на границе с кодом Python. Эта граница является точкой, где C++ встречается с Python. Подъем. 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);
...