在哪里打电话以便我可以管理异常?
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
的方法,这意味着 throwing
或 rethrowing
异常将没有用,因为前一个调用没有 try-catch statement
.
我有一个带有按钮 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
的方法,这意味着 throwing
或 rethrowing
异常将没有用,因为前一个调用没有 try-catch statement
.