В языке C не предусмотрена обработка исключений, потому что разработчики посчитали, что это лишние накладные расходы, которые противоречат целям языка.
В C ответственность за обработку ошибок полностью лежит на программисте. Для этого используются, например, такие механизмы:
Проверка возвращаемых значений функций. Многие системные функции, особенно те, которые взаимодействуют с файлами, сетью или другими внешними ресурсами, возвращают специальные значения. Они указывают на успех или неудачу операции.
Использование глобальной переменной errno. Она устанавливается системными функциями для указания на тип возникшей ошибки.
Обработка сигналов. Сигналы — это асинхронные уведомления о событиях: прерывании пользователем (Ctrl+C), сегментировании памяти, арифметическом переполнение. Программист может устанавливать обработчики сигналов, функции, которые будут вызываться при получении определённого сигнала.
Источник:
gitverse.ru