1

我有一个使用这种方法的类:

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,我必须返回 a 。DataTable我不确定如何将错误消息返回到页面。

4

3 回答 3

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;
}
于 2013-04-19T02:10:12.030 回答
0

只是不要捕获您无法完全处理的异常。

您的类无法处理此异常,因为“处理”它包括向用户显示它。您的班级对用户一无所知。

让您的类的调用者捕获异常并将其显示给用户。你的班级应该没有 try/catch 块(并且还应该解决@Dai 指出的其他问题)。

于 2013-04-19T01:49:46.693 回答
0

您可以在后面的代码中捕获异常,然后打印错误消息。

可能的代码:

try {
      // call getHeader method
}catch(Exception ex)
{
     // assume you have a label lblErrorMessage
     lblErrorMessage.Text = ex.Message;
}
于 2013-04-19T00:40:10.467 回答