Python 文字列を解析する C++ 関数があります。
std::string parse_string(PyObject* py_string) {
std::string out;
if (!PyString_Check(py_string)) {
PyErr_SetString(PyExc_TypeError,"expected a string");
return out;
}
out = PyString_AsString(py_string);
return out;
}
私はPythonラッパーから関数を呼び出しています:
PyObject* some_func(PyObject* self, PyObject* args) {
// ...
std::string my_first_string = parse_string(first_py_string);
if (PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError,"more verbose error for this string");
return 0;
}
std::string my_second_string = parse_string(second_py_string);
if (PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError,"some other error for this string");
return 0;
}
// ...
}
PyErr_SetString
これにより、必要に応じて Python 例外がスローされますが、より詳細なメッセージを表示するために再度呼び出すことを心配しています。漏れの原因になりますか?