我有一个使用此方法的课程:
public static DataTable getHeader(DALheader header)
{
string sql = string.Format("EXECUTE getHeader @headerID = {0}", header.headerID);
SqlDataAdapter headerAdapter = new SqlDataAdapter(sql, eformConnection);
DataTable headerTable = new DataTable();
try
{
headerAdapter.Fill(headerTable);
return headerTable;
}
catch(Exception ex)
{
throw ex;
}
}
关于ASPX背后的代码,我称这种方法。如果我抛出ex
,你会在浏览器中看到asp.net错误。我想将它们保留在页面上并显示错误。我把方法调用放在try catch中,但是没有这样做,我不能返回ex
,因为如果我返回任何东西,我必须返回DataTable
。我不知道如何将错误消息返回到页面。
答案 0 :(得分:2)
不要处理数据库代码上的异常,而是处理页面上的异常。
上课:
public static DataTable getHeader(DALheader header)
{
string sql = string.Format("EXECUTE getHeader @headerID = {0}", header.headerID);
SqlDataAdapter headerAdapter = new SqlDataAdapter(sql, eformConnection);
DataTable headerTable = new DataTable();
headerAdapter.Fill(headerTable);
return headerTable;
}
在页面上:
try
{
var headerTable = GetHeader();
}
catch(Exception ex)
{
lblErrorMessage.Text = ex.Message;
}
答案 1 :(得分:0)
您可以在后面的代码中捕获异常,然后打印错误消息。
可能的代码:
try {
// call getHeader method
}catch(Exception ex)
{
// assume you have a label lblErrorMessage
lblErrorMessage.Text = ex.Message;
}
答案 2 :(得分:0)
只是不要捕捉你无法完全处理的异常。
您的类无法处理此异常,因为“处理”它包括将其显示给用户。你的班级对用户一无所知。
让您的类的调用者捕获异常并将其显示给用户。你的类应该没有try / catch块(并且还应该修复@Dai注意到的其他问题)。