在ASP.NET中将错误抛出为字符串

时间:2013-04-19 00:29:27

标签: asp.net exception try-catch

我有一个使用此方法的课程:

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。我不知道如何将错误消息返回到页面。

3 个答案:

答案 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注意到的其他问题)。