This may not answer your problem directly, but what is the purpose of your
try/catch statement? What is happening (if it did work) is that your
catching an exception, creating a new instace of the exception and throwing
it. This will erase your stack trace which will track down the root of where
the orginal exception gets thrown. If all you need to do is bubble it up to
the calling method, take out the try/catch all together, that way you
preserve the stack trace in your exception.
Or if you want to personalize your error messages you can do something like
this:
try
{
_Command.ExecuteNonQuery();
}
catch(SqlException ex)
{
string errMsg = "SQL Error received: " + ex.Message
throw new SqlException(errMsg, ex); //passing an inner exception
parameter preserves your stack trace in the exception.
}
catch(Exception ex)
{
string errMsg = "Unexpected error occured while executing non query:
" +
ex.Message
throw new Exception(errMsg, ex);
}
Personally, I would leave out the try/catch statement.
"Michael C" wrote:
I'm writing an app on the PDA using C# with .net 1.1. It is all working well
except in some cases a try catch is simply ignored and a totally different
error is returned. I've got code like below to execute a command. I'm
simulating loss of connection by stopping sqlserver during a transaction.
The problem is I cannot trap the error and I get a stack overflow exception
way up the stack at a Form.ShowDialog(). I've done a break on
executenonquery below and then pushed F11 and the catches both get ignored
and execution jumps up the stack without any code running at all.
I know this is a bit of an obsure problem but I appreciate any input. I
couldn't find anything on google.
Regards,
Michael
try
{
_Command.ExecuteNonQuery();
}
catch(SqlException ex)
{
throw new Exception(ex.Message);
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}