Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Управление исключениями средой выполнения




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

Для каждого выполняемого кода среда выполнения создает таблицу сведений об исключениях. Для каждого метода выполнения имеется связанный с ним массив информации по обработке исключений (который может быть и пустым) в таблице сведений об исключениях. Каждая запись массива описывает защищенный блок кода, все фильтры исключений, связанные с этим кодом, и все обработчики исключений (операторы catch).Применение этой таблицы исключений весьма результативно, так как при отсутствии исключения не происходит снижения производительности процессора или неэффективного использования памяти. Ресурсы используются только при возникновении исключения.

Таблица сведений об исключении отображает четыре типа обработчиков исключений для защищенных блоков.

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

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

Обработчик с фильтрацией по типу обрабатывает любое исключение заданного класса или любого из производных этого класса.

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

Каждый язык реализует такие обработчики исключений в соответствии с его спецификациями. Например, Visual Basic предоставляет доступ к обработчику с пользовательской фильтрацией посредством сравнения переменных (с использованием ключевого слова When) в операторе catch; C# не реализует обработчик с пользовательской фильтрацией.

При возникновении исключения среда выполнения начинает выполнение процесса, состоящего из двух шагов:

Среда выполнения производит поиск массива для первого защищенного блока, в котором:

защищена область, включающая выполняемую в данный момент инструкцию;

содержится обработчик исключения или фильтр для обработки этого исключения.

Если массив найден, среда выполнения создает объект Exception, описывающий данное исключение. Затем среда выполнения выполняет все операторы finally или сбойные операторы, находящиеся между оператором, в котором возникло исключение, и оператором обработки этого исключения. Обратите внимание, что важен порядок обработчиков исключений — первым определяется внутренний обработчик. Обратите внимание, что обработчики исключений могут получать доступ к локальным переменным и локальной памяти программы, перехватывающей исключение, но любые промежуточные значения на момент инициации исключения теряются.

Если в текущем методе согласований не найдено, среда выполнения проводит поиск каждого вызывающего оператора текущего метода и продолжает этот процесс, перемещаясь вверх по стеку. Если не найден ни один соответствующий оператор, то среда выполнения предоставляет отладчику доступ к исключению. Если отладчик не подключается к исключению, то среда выполнения создает событие AppDomain.UnhandledException. Если нет слушателей для этого события, то среда выполнения делает дамп трассировки стека и завершает приложение.

 


Поделиться:

Дата добавления: 2015-04-21; просмотров: 146; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты