Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_-_ALL.docx
Скачиваний:
10
Добавлен:
10.09.2019
Размер:
607.44 Кб
Скачать
  1. Виключні ситуації у програмних продуктах

Обработка исключительных ситуаций (ИС) – механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (или бессмысленности) дальнейшей отработки программой её базового алгоритма.

ИС, возникающие при работе программы, можно разделить на два основных типа: синхронные и асинхронные:

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

  • Асинхронные исключения могут возникать в любой момент времени и не зависят от того, какую инструкцию программы выполняет система (аварийный отказ питания, поступление новых данных).

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

Обработка ИС самой программой заключается в том, что при возникновении ИС, управление передаётся некоторому заранее определённому обработчику – блоку кода, процедуре, функции, которые выполняют необходимые действия.

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

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

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

В программах исключительные ситуации определяются как классы.

Чтобы заставить программы следить за исключительными ситуациями, необходимо использовать оператор try. Для обнаружения определённой исключительной ситуации программы используют оператор catch. Для генерации исключительной ситуации при возникновении ошибки программы используют оператор throw.

Если программа обнаруживает исключительную ситуацию, она вызывает спец. функцию, которая называется обработчиком исключительной ситуации. При обработке исключения можно ограничить типы исключений для функции – для этого к описанию функции добавляют справа слово throw(). Список типов исключений которые она может генерировать:

Тип_возвращаемого_значения имя_функции(список параметров) throw(типы исключений)

Если запретить генерацию всех исключений, то список пустой. При попытке сгенерировать исключение, тип которого не указан в списке, произойдёт аварийное завершение. Также функция, которая ограничена в генерации некоторых типов исключения, может иметь в своём теле блок try и генерировать любое исключение внутри себя.

Можно генерировать исключение из блока catсh, которое обрабатывает исключение. Для этого указывается оператор throw() без параметров, и тогда текущее сгенерированное исключение будет передано для обработки во внешнюю последовательность try/catch.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]