我有一个带按钮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
之间而不必调试按钮点击?
正如Kenneth K所提到的,查看异常对象中的堆栈跟踪将显示之前调用以进行调用的呼叫。
我刚刚意识到的一点是,最后一种方法是唯一一个try-catch statement
,这意味着throwing
或rethrowing
异常将没有好处,因为前一次调用没有try-catch statement
。