Как использовать операторы Try Catch в C

Kak Ispol Zovat Operatory Try Catch V C



Слова «попробовать» и «поймать» описывают, что делать, когда программа сталкивается с исключением из-за проблемы с кодом или данными. Исключения обрабатываются в пытаться блок кода. Блоки catch используются для поиска и обработки исключений из блоков try. Многие языки программирования, включая Python, C++ и JavaScript, включают Попробуйте поймать заявления.

В этой статье показано, что такое оператор try-catch и как он реализован на примере программирования на C.

Что такое оператор Try Catch?

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







Общий синтаксис Попробуйте поймать заявление дается как:



пытаться {
/*
Вставьте некоторый код, который, вероятно, будет генерировать ошибки
*/
}
ловить {
/*
Написать код для обработка сгенерированных ошибок.
*/
}

Что такое оператор try-catch в C?

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



Теперь, по мере улучшения кода, мы будем постепенно создавать решение. Мы будем использовать longjmp и setjmp, две функции C, которые могут быть предоставлены заголовочным файлом setjmp.h. Функция setjmp принимает переменные типа jmp_buf и возвращает 0 при прямом вызове. Когда одна и та же переменная jmp_buf используется для вызова longjmp с двумя переменными, функция setjmp возвращает значение, совпадающее со значением второго аргумента longjmp.





Пример вышеприведенной реализации приведен как:

#include
#include
#define ПОПРОБУЙТЕ сделать { jmp_buf buf_state; если ( !setjmp(buf_state)) {
#define УЛОВИТЬ } иначе {
#определить КОНЕЦ }} пока(0)
#define THROW longjmp(buf_state, 1)
внутренний основной ( )
{
ПЫТАТЬСЯ {
printf ( 'Попробуйте тестирование операторов \n ' ) ;
БРОСАТЬ;
printf ( 'Утверждение не должно появляться, так как блок THROW уже вызвал исключение \n ' ) ;
}
ЛОВИТЬ {
printf ( 'Получил исключение \n ' ) ;
}
КОНЕЦ;
возвращаться 0 ;
}

В приведенной выше программе C КОНЕЦ Функция используется для предоставления закрывающей части блока do-while.



Заключение

Если программа сталкивается с исключением из-за ошибки данных или кода во время ее работы, « пытаться ' и ' ловить ” опишите, как им управлять. В пытаться блок кода, исключения возникают, когда ловить блок, где ошибки от пытаться блоки найдены и обработаны. Многие языки программирования поддерживают Попробуйте поймать блокирует, а C нет. В этом руководстве описан метод использования операторов try-catch в программировании на C.