diff --git a/src/RetrigAO.cpp b/src/RetrigAO.cpp
index 04609ce382f8bcdc933ae0372a5319be4e2eb850..5d5a0dd652edb652d809309adb274c3e4da2bd9e 100755
--- a/src/RetrigAO.cpp
+++ b/src/RetrigAO.cpp
@@ -200,7 +200,7 @@ void RetrigAO::init_device()
   ch5 = 0;
   ch6 = 0;
   ch7 = 0;
-  _error_message = "";
+  m_error_message = "An error has occured";
   
   // Initialise variables to default values
   //--------------------------------------------
@@ -1563,6 +1563,12 @@ void RetrigAO::stop_with_zero_forcing()
 	init_board();
 }
 
+void RetrigAO::raise_error(std::string p_error_message)
+{
+   m_error_message = p_error_message;
+   set_state(Tango::FAULT);
+}
+
 //+------------------------------------------------------------------
 /**
  *	method:	RetrigAI::init_board
@@ -1578,12 +1584,8 @@ void RetrigAO::init_board(void)
 	//- check memory allocation
 	if (ao == 0)
 	{
-		set_internal_state();
-		Tango::Except::throw_exception(
-		  (const char*)("OUT_OF_MEMORY"),
-		  (const char*)("out of memory error"),
-		  (const char*)("RetrigAO::init_device")
-		  );
+		raise_error("RetrigAO::init_board\nout of memory error while initializing ADLinkContinuousAO");
+		return;
 	}
 	
 	asl::ContinuousAOConfig _config;
@@ -1597,13 +1599,8 @@ void RetrigAO::init_board(void)
 	ch7 = new double[bufferDepth];
 	if(ch0 == 0 || ch1 == 0 || ch2 == 0 || ch3 == 0 || ch4 == 0 || ch5 == 0 ||ch6 == 0 || ch7 == 0)
 	{
-		set_internal_state();
-		delete_device();
-		Tango::Except::throw_exception(
-		  (const char*)("OUT_OF_MEMORY"),
-		  (const char*)("out of memory error"),
-		  (const char*)("RetrigAO::init_device")
-		  );
+		raise_error("RetrigAO::init_device\nout of memory error while initializing channel's datas");
+		return;
 	}
 	
 	
@@ -2021,35 +2018,38 @@ void RetrigAO::init_board(void)
 	
 	DEBUG_STREAM<<"RetrigAO::init_device : init acq"<<std::endl;
 	try{
-	_ASL_TRY_ACTION
-	(
-		ao->init(adl::DAQ2502, boardNum),
-		"init", 
-		"RetrigAO::init_device",
-		set_internal_state()
-	);
-	
-	config = _config;
-	/*DEBUG_STREAM<<"RetrigAO::init_device : config acq"<<std::endl;
-	try
-	{
 		_ASL_TRY_ACTION
-	(
-		ao->configure(_config),
-		"configure", 
-		"RetrigAO::init_device",
-		set_internal_state()
-	);	
-	}
-	catch (...)
-	{
-		_error_message = "Error while configurating drivers";
-	}
-	*/
+		(
+			ao->init(adl::DAQ2502, boardNum),
+			"init", 
+			"RetrigAO::init_device",
+			set_internal_state()
+		);
+		
+		config = _config;
+		
+		/*DEBUG_STREAM<<"RetrigAO::init_device : config acq"<<std::endl;
+		try
+		{
+			_ASL_TRY_ACTION
+		(
+			ao->configure(_config),
+			"configure", 
+			"RetrigAO::init_device",
+			set_internal_state()
+		);	
+		}
+		catch (...)
+		{
+			raise_error("RetrigAO::init_device\nError while configurating drivers");
+			return;
+		}
+		*/
 	}
 	catch (...)
 	{
-		_error_message = "Error while initializing drivers";
+		raise_error("RetrigAO::init_device\nError while initializing drivers");
+		return;
 	}	
 }
 //+------------------------------------------------------------------
@@ -2245,10 +2245,7 @@ void  RetrigAO::set_internal_state(void)
       break;
      case asl::ContinuousAO::FAULT:
       set_state(Tango::FAULT);
-	  if (_error_message == "")
-		set_status("An error has occured");
-      else
-		set_status(_error_message);
+	  set_status(m_error_message);
 	  break;
     case asl::ContinuousAO::UNKNOWN:
     default:
diff --git a/src/RetrigAO.h b/src/RetrigAO.h
index 727cd8b1ff84d4c7846b54d2781f3426a129b9a9..ccbd460a9b0450d56cd16d6773fb8fb4db099c0e 100755
--- a/src/RetrigAO.h
+++ b/src/RetrigAO.h
@@ -539,6 +539,7 @@ protected :
    ADLinkContinuousAO* ao;
    void set_internal_state(void);
    void stop_with_zero_forcing();
+   void raise_error(std::string p_error_message);
    double* ch0;
    double* ch1;
    double* ch2;
@@ -549,7 +550,7 @@ protected :
    double* ch7;
    double err_ctr;
    short use_fifo;
-   std::string _error_message;
+   std::string m_error_message;
    //- Store the values into the property
    //- Properties stuff
    int				FindIndexFromPropertyName(Tango::DbData& dev_prop, string property_name);