Skip to content
Snippets Groups Projects
Commit bbfb6d96 authored by florent's avatar florent
Browse files

Catch exceptions in signal set and get value methods.

      * src/signal-base-py.cc.
parent 574c2cc0
No related branches found
No related tags found
No related merge requests found
...@@ -75,8 +75,19 @@ namespace dynamicgraph { ...@@ -75,8 +75,19 @@ namespace dynamicgraph {
SignalBase<int>* signal = (SignalBase<int>*)pointer; SignalBase<int>* signal = (SignalBase<int>*)pointer;
std::ostringstream value; std::ostringstream value;
signal->get(value); try {
return Py_BuildValue("s", value.str()); signal->get(value);
} catch (const dynamicgraph::ExceptionAbstract& exc) {
PyErr_SetString(error, exc.getStringMessage().c_str());
return NULL;
} catch (const std::exception& exc) {
PyErr_SetString(error, exc.what());
} catch (...) {
PyErr_SetString(error, "Unknown exception");
return NULL;
}
std::string valueString = value.str();
return Py_BuildValue("s", valueString.c_str());
} }
PyObject* setValue(PyObject* self, PyObject* args) PyObject* setValue(PyObject* self, PyObject* args)
...@@ -92,9 +103,23 @@ namespace dynamicgraph { ...@@ -92,9 +103,23 @@ namespace dynamicgraph {
pointer = PyCObject_AsVoidPtr(object); pointer = PyCObject_AsVoidPtr(object);
SignalBase<int>* signal = (SignalBase<int>*)pointer; SignalBase<int>* signal = (SignalBase<int>*)pointer;
std::istringstream value(valueString); std::ostringstream os;
os << valueString;
std::istringstream value(os.str());
try {
signal->set(value);
} catch (const dynamicgraph::ExceptionAbstract& exc) {
PyErr_SetString(error, exc.getStringMessage().c_str());
return NULL;
} catch (const std::exception& exc) {
PyErr_SetString(error, exc.what());
return NULL;
} catch (...) {
PyErr_SetString(error, "Unknown exception");
return NULL;
}
signal->set(value);
return Py_BuildValue(""); return Py_BuildValue("");
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment