在哪里打电话以便我可以管理异常?

Where was call made so I can manage exception?

我有一个带有按钮 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()不是直接从webform中调用的,但是我不知道这个方法到底是谁调用的

所以现在调试器点击 throw;,按 F11 ("step into") 将我带到 Web 浏览器并出现非托管错误。

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

我的问题是:如何查看所有调用(在 ButtonAdd_Click()ReturnResults 之间,而无需调试按钮点击?

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

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