20.3.6. В Unix API не используются исключительные ситуации
20.3.6. В Unix API не используются исключительные ситуации
Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными119. Таким образом, С-функции в Unix API сообщают об ошибках путем возвращения известного значения (обычно -1 или указатель на NULL-символ) и установки глобальной переменной errno.
Оглядываясь назад, становится ясно, что это является источником многих неочевидных ошибок. Программисты в спешке часто пренебрегают проверкой возвращаемых значений. Так как исключительные ситуации не обрабатываются, нарушается правило исправности; процесс выполнения программы продолжается до тех пор, пока позднее ошибка не проявится при выполнении как некоторый сбой или повреждение данных.
Отсутствие исключений также означает, что некоторые задачи, которые должны были бы быть простыми идиомами — как выход из обработчика сигналов по версии с сигналами Беркли-стиля — должны осуществляться с помощью сложного кода, который является причиной проблем переносимости и чреват ошибками.
Данная проблема может быть скрыта (и обычно скрывается) привязками Unix API в таких языках, как Python или Java, в которых есть исключительные ситуации.
Недостаток исключений фактически является индикатором проблемы с последующими более крупными последствиями. Слабая онтология типов в С делает проблематичным обмен данными между реализованными на нем языками более высокого уровня. Например, большинство современных языков имеют списки и словари как первичные типы данных. Однако, поскольку они не имеют канонического представления в С, попытки передавать списки между (например) Perl и Python являются неестественными и требуют большого количества связующего кода.
Существуют технологии, такие как CORBA, которые решают более крупную проблему, но они тяжеловесны и склонны задействовать большое количество преобразований во время выполнения.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Какие программы используются в этой книге
Какие программы используются в этой книге Вопрос далеко не праздный, учитывая то, что за программы сегодня приходится платить… Так что же за программы использовал автор?Только бесплатные!— Блокнот — простейший текстовый редактор, стандартно поставляемый в составе
(3.26) Правда ли что W2k всегда загружает определённый набор dll, даже если они не используются?
(3.26) Правда ли что W2k всегда загружает определённый набор dll, даже если они не используются? Правда. Список этих DLL находится здесь:HKLMSYSTEMCurrentControlSetControlSession ManagerKnownDLLsТеоретически, если Вы уберёте из этого списка лишнее, это может освободить некоторое количество памяти и
1.5.1 Прерывания и особые ситуации
1.5.1 Прерывания и особые ситуации Система UNIX позволяет таким устройства, как внешние устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий
3.13. Правда ли что XP всегда загружает определённый набор DLL, даже если они не используются?
3.13. Правда ли что XP всегда загружает определённый набор DLL, даже если они не используются? Правда. Список этих DLL находится здесь: HKLMSYSTEMCurrentControlSetControlSession ManagerKnownDLLs Теоретически, если вы уберёте из этого списка лишнее, это может освободить некоторое количество памяти и
Какие программы используются в этой книге
Какие программы используются в этой книге Вопрос далеко не праздный, учитывая то, что за программы сегодня приходится платить… Так что же за программы использовал автор?Только бесплатные!— Блокнот — простейший текстовый редактор, стандартно поставляемый в составе
R.15.2 Запуск особой ситуации
0
R.15.4 Обработка особой ситуации
R.15.4 Обработка особой ситуации Обработчик типа T, const T, T& или const& сопоставим с выражением-запуска, имеющим операнд типа E, если:[1] T и E являются одним типом;[2] T является доступным (§R.4.6) базовым классом E в точке запуска;[3] T является типом указателя, а E является таким типом
Бизнес-ситуации
Бизнес-ситуации Многие книги, посвященные компьютерному обеспечению, состоят из длинных списков программных средств с кратким описанием особенностей их работы. Если вам повезет, вы найдете описание того, как данный продукт связан с реальным миром.Цель настоящей книги –
20.3.6. В Unix API не используются исключительные ситуации
20.3.6. В Unix API не используются исключительные ситуации Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными119. Таким образом, С-функции в Unix API сообщают об ошибках путем возвращения известного
Unix-строки (чтение и запись Unix-файлов)
Unix-строки (чтение и запись Unix-файлов) Данный модуль позволяет читать и записывать файлы формата Unix.unit StreamFile;interfaceUses SysUtils;Procedure AssignStreamFile(var f: text; FileName: String);implementationConst BufferSize = 128;Type TStreamBuffer = Array[1..High(Integer)] of Char; TStreamBufferPointer = ^TStreamBuffer; TStreamFileRecord = Record Case Integer Of 1: ( Filehandle: Integer; Buffer:
46 Полезные ситуации
46 Полезные ситуации Сегодня чуть ли не каждый системный аналитик или разработчик программного обеспечения превращается в сценариста, словно в каждом из них спрятан талант голливудского кинодраматурга. Как только скучающие теоретики придумывают очередную статью, а
Ситуации отказа
Ситуации отказа Рассматривая список возможных исключений, полезно определить, когда может встретиться отказ (причина исключения у вызывающей программы):Определение: случаи отказаВызов программы приводит к отказу, если и только если встретилось исключение в процессе
Когда не используются закрепленные объявления
Когда не используются закрепленные объявления Не всякое объявление вида x: A в классе A следует менять на x: like Current и не в каждой паре компонентов одного типа следует один из них делать опорным, а другой - закрепленным.Закрепленное объявление - это своего рода обязательство
Особо критические ситуации
Особо критические ситуации Один короткий сигнал при запуске компьютера свидетельствует о том, что каких-либо критических неисправностей не обнаружено. Но если сигналов несколько – значит, программа самодиагностики компьютера обнаружила критическую ошибку, не