Где был сделан вызов, чтобы я мог управлять исключением? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть веб-форма с кнопкой 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() не вызывается напрямую из веб-формы, но я не знаю, кто именно вызвал этот метод.

Так что теперь отладчик нажимает throw;, нажатие F11 («шаг в») переводит меня в веб-браузер с неуправляемой ошибкой.

Я предполагал, что, вызвав исключение, отладчик перенесет меня в предыдущий класс с именем ClassX.ReturnResults() и т. Д. До достижения веб-формы. Но этого не происходит. Как только нажата throw;, я получаю необработанную ошибку в веб-форме, и это именно то, чего я хочу избежать.

У меня вопрос: как я могу увидеть все вызовы (от ButtonAdd_Click() до ReturnResults без отладки нажатия кнопки?

1 Ответ

0 голосов
/ 07 сентября 2018

Как упомянул Кеннет К, при просмотре трассировки стека в объекте исключения отобразятся все предыдущие вызовы, сделанные для достижения вызова, на который был сделан вызов.

Я только что понял, что последний метод был единственным с try-catch statement, что означает, что throwing или rethrowing исключение не принесет пользы, так как предыдущий вызов не имел try-catch statement.

...