From bc8b36df103631322864ccf8e28589a6eb058395 Mon Sep 17 00:00:00 2001
From: gscalamera <graziano.scalamera@elettra.eu>
Date: Tue, 4 Apr 2017 17:16:42 +0200
Subject: [PATCH] Added some try/catch

---
 src/alarm_table.cpp | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/alarm_table.cpp b/src/alarm_table.cpp
index b76fb05..e60d520 100644
--- a/src/alarm_table.cpp
+++ b/src/alarm_table.cpp
@@ -844,8 +844,15 @@ void alarm_table::save_alarm_conf_db(string att_name, string name, string status
 
 	string dev_name(mydev->get_name());
 
-	Tango::DbDevice *db_dev = mydev->get_db_device();
-	db_dev->get_dbase()->put_device_attribute_property(dev_name,db_data);
+	try
+	{
+		Tango::DbDevice *db_dev = mydev->get_db_device();
+		db_dev->get_dbase()->put_device_attribute_property(dev_name,db_data);
+	}
+	catch(Tango::DevFailed &e)
+	{
+		cout << __func__ << ": Exception saving configuration = " << e.errors[0].desc<<endl;
+	}
 }
 
 void alarm_table::delete_alarm_conf_db(string att_name)
@@ -907,8 +914,14 @@ void alarm_table::get_alarm_list_db(vector<string> &al_list, map<string, string>
 		db_data.push_back(Tango::DbDatum(*it));
 	}
 
-	db_dev->get_attribute_property(db_data);
-
+	try
+	{
+		db_dev->get_attribute_property(db_data);
+	}
+	catch(Tango::DevFailed &e)
+	{
+		cout << __func__ << ": Exception reading configuration = " << e.errors[0].desc<<endl;
+	}
 	for (size_t i=0;i < db_data.size();/*i++*/)
 	{
 		Tango::DevLong64 nb_prop;
@@ -972,6 +985,11 @@ void alarm_table::get_alarm_list_db(vector<string> &al_list, map<string, string>
 				KEY(ON_COMMAND_KEY)<< alm_on_command << "\t" <<
 				KEY(OFF_COMMAND_KEY)<< alm_off_command << "\t" <<
 				KEY(ENABLED_KEY)<< alm_enabled;
+		if(alm_name.empty() || alm_formula.empty() || alm_level.empty() || alm_group.empty() || alm_message.empty()) //TODO: decide if all mandatory
+		{
+			cout << __func__ << ": skipped '" << alm.str() << "'" << endl;
+			continue;
+		}
 		al_list.push_back(alm.str());
 		saved_alarms.insert(make_pair(alm_name,alm.str()));
 	}
-- 
GitLab