在哪里打电话,我可以管理例外?

问题描述 投票:1回答:1

我有一个带按钮ButtonAdd的webform。我点击ButtonAdd并调用事件处理程序ButtonAdd_Click()

这个事件序列在ClassX中断,并且方法ReturnResults()看起来像这样:

public DataTable ReturnResults(string ConnectionString, string Employee)
{
    DataSet projects = new DataSet();
    string sqlSelect = string.Format("usp_ReturnEmplData '{0}'", Employee);
    try
    {
        nsbProject = SqlHelper.ExecuteDataset(ConnectionString, CommandType.Text, sqlSelect);
    }
    catch (SqlException e)
    {
        throw;
    }
    DataTable empTable = projects.Tables[0];
    return empTable;
}

ReturnResults()不是直接从webform调用的,但我不知道究竟是谁调用了这个方法。

所以现在调试器命中throw;,按F11(“step into”)将我带到非浏览器错误的Web浏览器。

我假设通过抛出异常,调试器会将我带到前一个调用ClassX.ReturnResults()的类,依此类推,直到达到webform。但那并没有发生。一旦throw;被击中,我就会在webform中得到未处理的错误,而这正是我想要避免的。

我的问题是:我怎么能看到所有的调用(在ButtonAdd_Click()ReturnResults之间而不必调试按钮点击?

c# asp.net visual-studio-2013 exception-handling webforms
1个回答
0
投票

正如Kenneth K所提到的,查看异常对象中的堆栈跟踪将显示之前调用以进行调用的呼叫。

我刚刚意识到的一点是,最后一种方法是唯一一个try-catch statement,这意味着throwingrethrowing异常将没有好处,因为前一次调用没有try-catch statement

© www.soinside.com 2019 - 2024. All rights reserved.