Reputation: 476
I have written a c# monitoring program to check values in a database. It runs 4 separate checks then outputs the results (Winform).
It was all running great then last week the first check hit a problem and whole program stopped.
So my question is how would I trap any errors in any of the 4 checks and keep going/ trucking?
Can I do it with try catch or would this halt program?
Code Sample
bool bTestDate;
object LastDataDate;
//-- Check A - Table 1
OdbcConnection DbConnection = new OdbcConnection("DSN=EDATA");
try
{
DbConnection.Open();
}
catch (OdbcException ex)
{
Console.WriteLine("connection to the DSN '" + connStr + "' failed.");
Console.WriteLine(ex.Message);
return;
}
OdbcCommand DbCommand = DbConnection.CreateCommand();
DbCommand.CommandText = "SELECT NAME, UNAME, DATIME_ENDED FROM XPF WHERE NAME='XXXX'";
OdbcDataReader DbReader = DbCommand.ExecuteReader();
int fCount = DbReader.FieldCount;
string myBatch;
string myUser;
string myDate;
while (DbReader.Read())
{
Console.Write(":");
myBatch = DbReader.GetString(0);
myUser = DbReader.GetString(1);
myDate = DbReader.GetString(2);
myDate = myDate.Remove(myDate.Length - 10);
for (int i = 0; i < fCount; i++)
{
String col = DbReader.GetString(i);
Console.Write(col + ":");
}
tbxxx.Text = string.Format("{0:dd/M/yy H:mm:ss}", myDate);
bool TestDate;
TestDate = CheckDate(Convert.ToDateTime(myDate));
CheckVerif(TestDate, lblVerifixxx);
}
//-- Check B - Table 2
string cnStr = setConnectionString();
string mySQL = "Select Max(TO_DATE(TIME_ID, 'DD/MM/YYYY')) FROM table";
OracleConnection cn = new OracleConnection(cnStr);
cn.Open();
OracleCommand cmd = new OracleCommand(mySQL, cn);
LastDataDate = cmd.ExecuteScalar();
cmd.Dispose();
tbLastDate.Text = string.Format("{0:dd MMM yy}", LastDataDate);
bTestDate = CheckDate(Convert.ToDateTime(LastDataDate));
CheckVerif(bTestDate, lblVerif);
//-- Check C - Table 3
mySQL = "Select Max(xxx_DATE) from AGENT";
OracleCommand cmd2 = new OracleCommand(mySQL, cn);
LastDataDate = cmd2.ExecuteScalar();
cmd2.Dispose();
tbxxx2.Text = string.Format("{0:dd MMM yy}", LastDataDate);
bool TestDatex;
TestDatex = CheckDate(Convert.ToDateTime(LastDataDate));
CheckVerif(TestDatex, lblVerif2);
Upvotes: 1
Views: 52
Reputation: 68
You can use a try catch
block with the expected exceptions and a general one, just to be certain you catch them all and not throw the exception, therefore not halting the program.
try
{
string s = null;
ProcessString(s);
}
// Most specific:
catch (ArgumentNullException e)
{
Console.WriteLine("{0} First exception caught.", e);
}
// Least specific:
catch (Exception e)
{
Console.WriteLine("{0} Second exception caught.", e);
}
Check https://msdn.microsoft.com/en-us/library/0yd65esw.aspx
Upvotes: 1