Commit 6969e7c1 by Wenzel Jakob

exception handler tweaks (fixes #284)

parent d46b6eee
...@@ -104,18 +104,18 @@ PYBIND11_NOINLINE inline handle get_type_handle(const std::type_info &tp) { ...@@ -104,18 +104,18 @@ PYBIND11_NOINLINE inline handle get_type_handle(const std::type_info &tp) {
} }
PYBIND11_NOINLINE inline std::string error_string() { PYBIND11_NOINLINE inline std::string error_string() {
std::string errorString; PyObject *type, *value, *traceback;
PyThreadState *tstate = PyThreadState_GET(); PyErr_Fetch(&type, &value, &traceback);
if (tstate == nullptr)
return "";
if (tstate->curexc_type) { std::string errorString;
errorString += (std::string) handle(tstate->curexc_type).str(); if (type) {
errorString += (std::string) handle(type).str();
errorString += ": "; errorString += ": ";
} }
if (tstate->curexc_value) if (value)
errorString += (std::string) handle(tstate->curexc_value).str(); errorString += (std::string) handle(value).str();
PyErr_Restore(type, value, traceback);
return errorString; return errorString;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment