打电话到哪里以便我可以处理异常?

时间:2018-09-06 17:12:07

标签: c# asp.net visual-studio-2013 exception-handling webforms

我有一个带有按钮ButtonAdd的网络表单。我单击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()不是直接从Web表单中调用的,但我不知道是谁确切地调用了此方法。

因此,现在调试器命中throw;,按F11(“进入”)使我进入具有非托管错误的Web浏览器。

我认为,通过引发异常,调试器会将我带到名为ClassX.ReturnResults()的上一类,依此类推,直到到达Webform。但这没有发生。一旦碰到throw;,我就会在网络表单中收到未处理的错误,这正是我要避免的错误。

我的问题是:我如何才能看到所有呼叫(在ButtonAdd_Click()ReturnResults之间,而无需调试按钮单击?

1 个答案:

答案 0 :(得分:0)

正如Kenneth K提到的那样,查看异常对象中的堆栈跟踪将显示以前进行的所有调用,以到达进行该调用的位置。

我刚刚意识到的事情是,最后一个方法是唯一带有try-catch statement的方法,这意味着throwingrethrowing的异常不会起作用,因为上一个调用确实做了没有try-catch statement