2

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 例外がスローされますが、より詳細なメッセージを表示するために再度呼び出すことを心配しています。漏れの原因になりますか?

4

0 に答える 0