Top.Mail.Ru

Обработка исключений C. Программирование на C и C++

Обработка исключений в С и С++ схожа. Основной ее посыл — это вызывать
функцию для обработки ошибок, когда ошибки будут обнаружены в программе. Это
очень сильно автоматизирует процесс обработки ошибок, а значит и ускоряет саму
разработку программы. Ведь раньше все это приходилось делать «руками», а теперь
процесс поиска и решения ошибок взяла на себя обработка исключений.
Обработка исключительных ситуация в С — это процесс, который пригодиться
каждому программисту на этом языке.

Обработка исключений в С и С++

Обработка исключительных ситуаций в С применяет 3 основных и важных слова:

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

Обработка исключений в С имеет довольно простой принцип:

Код, в которым мы ожидаем появление ошибок (они же исключения!),
помещается в блок try. Когда в этом блоке обнаруживается исключение
(ошибка), то оно перехватывается подходящей инструкцией catch и
обрабатывается
.

Блоки try и catch генерируются по следующей форме:

try {
//код-инструкция, который нужно обработать на исключения
catch ( описание типа и аргумента) {
//инструкция блока catch }

catch ( описание типа и аргумента) {
//инструкция блока catch }

}
Блок try может быть разных размеров. Он может содержать в себе лишь часть какой-
нибудь функции, которую нужно проверить на ошибки, а может содержать весь блок
main(), то есть охватить обработку исключений всей программы.
Когда в try будет найдена какая-то ошибка, она будет перехвачена блоком catch,
который обладает соответствующей инструкцией. То есть, для одного try может быть
написано множество catch для обработки разных типов исключений. Один catch =
один тип исключений(ошибок). Соответственно catch исполняется, только когда его
инструкции соответствуют найденной ошибке в try. А если в блоке try не будут
найдены никакие исключения, то никакой catch выполняться не будет.
Бывает такое, что в программе находятся ошибки, для которых нет инструкций catch.
В этом случае программа может завершиться в аварийном режиме.
Когда найденная ошибка в блоке try передается соответствующей инструкции catch –
при этом вся программа приостанавливает свою работу и ждет завершения работы
блока catch. Ошибка, прошедшая catch считается обработанной, и после окончания
работы этого блока возобновляется работа всей обрабатываемой программы.

Обработка исключений в С: блок catch

С блоком try все ясно — там может быть любой объем кода, который нужно
проверить на исключения. Но что может быть в блоке catch? В принципе там можно
написать любую нужную инструкцию или же вообще блок можно оставить пустым. Но
чаще всего эти блоки выполнют три основные вещи:

  1. Выводят сообщение о исключениях в Консоль или лог-документ.
  2. Возвращают значение и код ошибки обратно в cаller.
  3. Генерируют другое исключение для отправки его в другой блок try.

Возможно вам будет интересно почитать статью “Контейнеры Flex”

Заключение

Обработка исключений в С — это не сложная операция. Чтобы ее начать применять,
исключительных ситуаций 3 основные вещи:

  1. Когда используется оператор throw, то обработка исключений начинается в тот
    же момент с ближайшего блока try, даже если он находится выше по стеку.
    Если в этом try есть инструкция catch, для обработки данного исключения, то
    точка входа программы перейдет в данный обработчик. А само вброшенное
    исключение будет считаться обработанным.
  2. Если в ближайшем try не будет нужных обработчиков catch, для вброшенного
    исключения, то программа начнет выполняться со следующего try. И так, пока
    не будет найден нужный catch и не определится точка входа программы.
  3. Тип исключения и тип обработчика должны совпадать. К примеру, если ошибка
    типа float, то она не обработается catch типом int, а если исключение типа int
    никогда не обработается catch типом char и т.д.
Text.ru - 100.00%
Поделись статьей с друзьями!

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *