diff --git a/src/entity-py.cc b/src/entity-py.cc
index 976a2b8efc3a427050bbc544937fe4671a0d78dd..866f52cc63af34fba3dc00c255752c4eef1089d9 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(error, 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(error, 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,9 @@ namespace dynamicgraph {
 	    count++;
 	  }
 	  return result;
-	} catch(ExceptionAbstract& exc) {
-	  PyErr_SetString(error, exc.getStringMessage().c_str());
+	} catch(const std::exception& exc) {
+	  PyErr_SetString(error, exc.what());
+	  return NULL;
 	}
 	return NULL;
       }
@@ -223,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 21cef5f93e98c44ea72a2edc887722b2f95a6edb..78354f6c8b8603b959d702aa03133617ca582636 100644
--- a/src/signal-base-py.cc
+++ b/src/signal-base-py.cc
@@ -111,7 +111,7 @@ namespace dynamicgraph {
 	std::ostringstream oss;
 	try {
 	  obj->display(oss);
-	} catch (std::exception& exc) {
+	} catch (const std::exception& exc) {
 	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
@@ -134,7 +134,7 @@ namespace dynamicgraph {
 	std::ostringstream oss;
 	try {
 	  obj->displayDependencies(oss,time);
-	} catch (std::exception& exc) {
+	} catch (const std::exception& exc) {
 	  PyErr_SetString(error, exc.what());
 	  return NULL;
 	}
@@ -179,9 +179,6 @@ namespace dynamicgraph {
 	std::ostringstream value;
 	try {
 	  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 (...) {
@@ -207,9 +204,6 @@ namespace dynamicgraph {
 	std::string name;
 	try {
 	  name = signal->getName();
-	} 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 (...) {
@@ -238,9 +232,6 @@ namespace dynamicgraph {
 
 	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;