Вызов стека в обработке исключений - PullRequest
0 голосов
/ 06 октября 2009

Согласно руководству по проектированию, исключение отлова должно начинаться с более подробного исключения для System.Exception.

нравится:

try
{


}
catch(IOException IOEx)
{
}
catch(ArrayIndexOutOfRangeException AIE)
{
}
.....
catch(Exception ex)
{
}

Я слышал, что CLR отслеживает стек один за другим, чтобы найти исключение, чтобы найти соответствующее (в случае ошибки). Поскольку стек является последним в порядке поступления, CLR не будет обратный порядок ? (т.е. исключение .. ArrayIndexOutOfRangeException .. IOException)

1 Ответ

4 голосов
/ 06 октября 2009

Нет - стек в данном случае является стеком вызовов, поэтому, если он не найдет обработчик в текущем методе, он будет перемещаться вверх по стеку в поисках обработчика. Однако в рамках конкретного метода обработчики проверяются в указанном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...