Другое

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

Lorem ipsum dolor

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

 

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

Обработка исключительных ситуаций в С применяет 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.

 

Заключение

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

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

  2. Если в ближайшем try не будет нужных обработчиков catch для вброшенного исключения, то программа начнет выполняться со следующего try. И так до тех пор, пока не будет найден нужный catch и не определится точка входа программы.

  3. Тип исключения и тип обработчика должны совпадать. К примеру, если ошибка типа float, то она не обработается catch типом int, а если исключение типа int никогда не обработается catch типом char и т. д.

Схожие статьи

Обзор операционной системы macOS High Sierra: что нового
Другое

Обзор операционной системы macOS High Sierra: что нового

Как распознать шрифт по картинке: способы и программы
Другое

Как распознать шрифт по картинке: способы и программы

Анализ данных в R на примерах и задачах. Мануал Data Science
Другое

Анализ данных в R на примерах и задачах. Мануал Data Science

Экспертные системы — это полноценная замена специалиста или нет?
Другое

Экспертные системы — это полноценная замена специалиста или нет?

×