2009-10-06 5 views
0

В соответствии с директивой по дизайну исключение catching должно начинаться с большего исключения спецификации в System.Exception. Вызов стека при обработке исключений

как:

try 
{ 


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

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

ответ

4

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

Смежные вопросы