CARVIEW |
boost.python/RuntimeErrors
boost.python tries hard to provide best possible run-time errors. But often enough they need futher explanation. Some of them are mentioned below:
TypeError: bad argument type for built-in operation
Usualy means BPL couldn't find c++ method/function with appropriate signature. Very often that is wrong number of arguments, wrong argument(s) type and so on.
TypeError: No to_python converter found for C++ type: <type>
TypeError: No to_python (by-value) converter found for C++ type: <type>
BPL was unable to get C++ value from Python object.
For example, when calling extract<int>(<object>.attr("__len__")()) to get object length you omitted "()".
RuntimeError: This class cannot be instantiated from Python
Attempt to instantiate a class with no_init descriptor. It may be private constructor or abstract class.
RuntimeError: unidentifiable C++ Exception
Boost.Python provides a default exception handler that translates selected standard exceptions, then gives up with that message.
To install your own exception translator don't see tutorial.
(& missed in register_exception_translator call)
Use that:
struct PodBayDoorException; void translator(const PodBayDoorException& x) { PyErr_SetString(PyExc_UserWarning, "I'm sorry Dave..."); } BOOST_PYTHON_MODULE(kubrick) { register_exception_translator< PodBayDoorException>(&translator); ... }
EditText (last edited 2004-03-03 20:37:14 by MikeRovner)
DeleteCache (cached 2007-12-04 23:50:46)- Login
- Navigation
- Actions
- Your recent pages