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

Общий механизм обработки исключений.

Перехват исключений | Список исключений функции | Иерархии исключений |


Читайте также:
  1. III.1. ИНТЕГРАЛЬНЫЙ СПОСОБ ОБРАБОТКИ СИГНАЛОВ В ЧМ—РВ
  2. IV этап(с середины XX в. по настоящее время)– психология как наука, изучающая факты, закономерности и механизмы психики
  3. SE- общий текущий остаток
  4. Агроөнеркәсіптік кешенді мемлекеттік реттеудің бағыты, әдістері және нақты механизмдері
  5. Административный механизм управления энергосбережением
  6. Анатомо-физиологическое обоснование массажа, механизм его действия на организм человека
  7. Аппаратные средства поддержки многозадачной работы микропроцессора. Структура таблици состояния задач. Алгоритмы и механизмы переключения задач

Лекц.№13. Обработка исключений. Шаблоны классов.

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

Общий механизм обработки исключений.

àЗамечание. Эту тему мы, для начала, изучим следуя Т.Павловской (с некоторыми правками…J).

Исключительная ситуация, или исключение - это возникновение непредвиденного или аварийного события, которое может порождаться, например, некорректным использованием аппаратуры (деление на нуль или обращение по несуществующему адресу памяти и т.п.). Обычно эти события приводят к завершению программы с системным сообщением об ошибке. C++ дает программисту возможность восстанавливать программу и продолжать ее выполнение.

Исключения C++ не поддерживают обработку асинхронных событий, таких, как сбои оборудования или обработку прерываний, например, нажатие клавиш Ctrl+C. Механизм исключений предназначен только для событий, которые происходят в результате работы самой программы и указываются явным образом. Исключения возникают тогда, когда некоторая часть программы не смогла сделать то, что от нее требовалось. При этом другая часть программы может попытаться сделать что-нибудь иное.

Исключения позволяют логически разделить вычислительный процесс на две части - обнаружение аварийной ситуации и ее обработка. Это важно не только для лучшей структуризации программы. Главной причиной является то, что функция, обнаружившая ошибку, может “ не знать ”, что предпринимать для ее исправления, а использующий эту функцию код может “знать”, что делать, но не уметь определить место возникновения. Это особенно актуально при использовании библиотечных функций и программ, состоящих из многих модулей.

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

ПРИМЕЧАНИЕ В принципе, ничто не мешает рассматривать в качестве исключений не только ошибки, но и нормальные ситуации, возникающие при обработке данных, но это не имеет преимуществ перед другими решениями и не улучшает структуру и читаемость программы.

Место, в котором может произойти ошибка, должно входить в контролируемый блок - составной оператор, перед которым записано ключевое слово try.

Рассмотрим, каким образом реализуется обработка исключительных ситуаций.

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


Дата добавления: 2015-11-16; просмотров: 75 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Перегрузка операций присваивания| Синтаксис исключений

mybiblioteka.su - 2015-2024 год. (0.005 сек.)