Подтвердить что ты не робот

Как работают исключения (за кулисами) в С#

Идентично для Как работают исключения (за кулисами) в С++", но для С#.

Я знаю, что следующие шаги должны выполняться при вызове исключения.

  • Найти ближайшего обработчика для типа исключения;
  • Отвяжите стек до уровня обработчика,
  • Вызов обработчика;
  • Найдите и вызовите каждый блок finally.

Как .NET обрабатывает эти операции? Как работает отображение для "текущих" обработчиков? Сколько кода испускается в блоке try/catch? А в броском блоке?

4b9b3361

Ответ 1

Прочитайте статью Кристофера Брумме; он дает очень подробное объяснение того, что происходит за кулисами при обработке исключений CLR:

http://blogs.msdn.com/b/cbrumme/archive/2003/10/01/51524.aspx

Ответ 3

В исключениях .NET используется базовая реализация обработки структурированных исключений Windows, хотя это не является обязательным требованием. Моно может сделать это по-другому.

Фактически, если вы пишете однострочное консольное приложение, которое просто генерирует исключение, а затем запускает его в Windbg, вы увидите крючок в неуправляемой обработке исключений.