Идентично для Как работают исключения (за кулисами) в С++", но для С#.
Я знаю, что следующие шаги должны выполняться при вызове исключения.
- Найти ближайшего обработчика для типа исключения;
- Отвяжите стек до уровня обработчика,
- Вызов обработчика;
- Найдите и вызовите каждый блок
finally
.
Как .NET обрабатывает эти операции? Как работает отображение для "текущих" обработчиков? Сколько кода испускается в блоке try/catch? А в броском блоке?