我正在捕获异常并进行处理。在调用树的某个地方,我正在做同样的事情。一旦我在子级处理了异常,就想继续调用异常处理程序,无论它在哪里,都在调用树的某个位置。
为此,我以为我会再次投掷。但是,它不是在调用树的某个位置上进行分解,而是在我正在执行抛出并崩溃的地方在此行上进行分解:
throw new Exception("Cannot Write Header Row to Database " + Msg);
代码:
public static void NewHeaderRow(string FILE_REV_NUMBER, DateTime FILE_CREATE_DATE, string EDC_DUNS_NUMBER, int RunId)
{
SqlConnection connection = null;
try
{
connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DbConn"].ToString());
connection.Open();
SqlCommand com;
com = new SqlCommand("dbo.INSERT_PPL_HEADER", connection);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@FILE_REV_NUMBER", FILE_REV_NUMBER));
com.Parameters.Add(new SqlParameter("@FILE_CREATE_DATE", FILE_CREATE_DATE));
com.Parameters.Add(new SqlParameter("@EDC_DUNS_NUMBER", EDC_DUNS_NUMBER));
com.Parameters.Add(new SqlParameter("@RunId", RunId));
if (com.Connection.State == ConnectionState.Closed) com.Connection.Open();
com.ExecuteNonQuery();
}
catch (Exception e)
{
string Msg;
Msg = "Encountered unexpected program issue. Please contact your program administator. Error details...";
Msg = Msg + System.Environment.NewLine;
Msg = Msg + System.Environment.NewLine;
Msg = Msg + e.ToString();
Msg = Msg + System.Environment.NewLine;
Msg = Msg + System.Environment.NewLine;
Msg = Msg + e.Message;
throw new Exception("Cannot Write Header Row to Database " + Msg);
}
finally
{
if (connection == null) { } else connection.Close();
}
}
[尝试仅使用throw
关键字,而不要建立新的异常。
要向异常中添加其他信息,请在另一个异常对象中扭曲它,然后将原始异常作为参数与新消息一起传递,以将原始堆栈跟踪保留在内部异常中。
throw new Exception("Cannot Write Header Row to Database " + Msg, e);