Here is a sample program which shows the problem i've been having (posted in earlier messages). When I import the module "sample" and run the function test(), I get the following output: This is a test Raising an error Aborted When I should get a message saying it caught the error, and then a Python error, instead of it Aborting and quitting Python. /* sample.c */ #include "Python.h" #include "boost/python/class_builder.hpp" namespace py = boost::python; void test() { std::cout << "This is a test" << std::endl; std::cout << "Raising an error" << std::endl; PyErr_SetString(PyExc_TypeError, "This is the error"); throw py::argument_error(); } BOOST_PYTHON_MODULE_INIT(sample) { try { py::module_builder this_module("sample"); this_module.def(test, "test"); } catch (...) { std::cout << "Caught an error" << std::endl; py::handle_exception(); } }