diff --git a/src/entity-py.cc b/src/entity-py.cc
index 2942665532f6b7b5b1d58def16edd4cb4826b211..a4af9dc1a8ba43b597aff4880380ff7daa1f64be 100644
--- a/src/entity-py.cc
+++ b/src/entity-py.cc
@@ -26,7 +26,6 @@
 
 using dynamicgraph::Entity;
 using dynamicgraph::SignalBase;
-using dynamicgraph::ExceptionAbstract;
 using dynamicgraph::command::Command;
 using dynamicgraph::command::Value;
 using dynamicgraph::Vector;
@@ -96,8 +95,8 @@ namespace dynamicgraph {
 
 	try {
 	 name = entity->getName();
-	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
+	} catch(const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
 	return Py_BuildValue("s", name.c_str());
@@ -127,8 +126,8 @@ namespace dynamicgraph {
 	SignalBase<int>* signal = NULL;
 	try {
 	  signal = &(entity->getSignal(std::string(name)));
-	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
+	} catch(const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
 	// Return the pointer to the signal without destructor since the signal
@@ -164,8 +163,8 @@ namespace dynamicgraph {
 	    count++;
 	  }
 	  return result;
-	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
+	} catch(const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
 	return NULL;
@@ -224,7 +223,7 @@ namespace dynamicgraph {
 	  try {
 	    Value value = pythonToValue(PyValue, valueType);
 	    valueVector.push_back(value);
-	  } catch (ExceptionAbstract& exc) {
+	  } catch(const std::exception& exc) {
 	    std::stringstream ss;
 	    ss << "Error while parsing argument " << iParam+1 << ": "
 	       << exc.what() << ".";
diff --git a/src/signal-base-py.cc b/src/signal-base-py.cc
index 93b7984eac259ea9d9dcdfe0612bc6895c8f2368..f55904344916f8e434c300effe0aa7004b8e9689 100644
--- a/src/signal-base-py.cc
+++ b/src/signal-base-py.cc
@@ -112,8 +112,8 @@ namespace dynamicgraph {
 	std::ostringstream oss;
 	try {
 	  obj->display(oss);
-	} catch (std::exception& exc) {
-	  PyErr_SetString(dgpyError, exc.what());
+	} catch (const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
 	return Py_BuildValue("s", oss.str().c_str());
@@ -135,8 +135,8 @@ namespace dynamicgraph {
 	std::ostringstream oss;
 	try {
 	  obj->displayDependencies(oss,time);
-	} catch (std::exception& exc) {
-	  PyErr_SetString(dgpyError, exc.what());
+	} catch (const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
 	return Py_BuildValue("s", oss.str().c_str());
@@ -180,9 +180,6 @@ namespace dynamicgraph {
 	std::ostringstream value;
 	try {
 	  signal->get(value);
-	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
-	  return NULL;
 	} catch (const std::exception& exc) {
 	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;
@@ -209,9 +206,6 @@ namespace dynamicgraph {
 	std::string name;
 	try {
 	  name = signal->getName();
-	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
-	  return NULL;
 	} catch (const std::exception& exc) {
 	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;
@@ -241,9 +235,6 @@ namespace dynamicgraph {
 
 	try {
 	  signal->set(value);
-	} catch (const dynamicgraph::ExceptionAbstract& exc) {
-	  PyErr_SetString(dgpyError, exc.getStringMessage().c_str());
-	  return NULL;
 	} catch (const std::exception& exc) {
 	  PyErr_SetString(dgpyError, exc.what());
 	  return NULL;