20.3.6. В Unix API не используются исключительные ситуации

20.3.6. В Unix API не используются исключительные ситуации

Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными119. Таким образом, С-функции в Unix API сообщают об ошибках путем возвращения известного значения (обычно -1 или указатель на NULL-символ) и установки глобальной переменной errno.

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

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

Данная проблема может быть скрыта (и обычно скрывается) привязками Unix API в таких языках, как Python или Java, в которых есть исключительные ситуации.

Недостаток исключений фактически является индикатором проблемы с последующими более крупными последствиями. Слабая онтология типов в С делает проблематичным обмен данными между реализованными на нем языками более высокого уровня. Например, большинство современных языков имеют списки и словари как первичные типы данных. Однако, поскольку они не имеют канонического представления в С, попытки передавать списки между (например) Perl и Python являются неестественными и требуют большого количества связующего кода.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.5.1 Прерывания и особые ситуации

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

1.5.1 Прерывания и особые ситуации Система UNIX позволяет таким устройства, как внешние устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий


5.2 Отказные ситуации и уровни ПО

Из книги ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВСТРОЕННЫХ СИСТЕМ. Общие требования к разработке и документированию автора Госстандарт России


R.15.4 Обработка особой ситуации

Из книги Советы по Delphi. Версия 1.0.6 автора Озеров Валентин

R.15.4 Обработка особой ситуации Обработчик типа T, const T, T& или const& сопоставим с выражением-запуска, имеющим операнд типа E, если:[1] T и E являются одним типом;[2] T является доступным (§R.4.6) базовым классом E в точке запуска;[3] T является типом указателя, а E является таким типом


Unix-строки (чтение и запись Unix-файлов)

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

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:


(3.26) Правда ли что W2k всегда загружает определённый набор dll, даже если они не используются?

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

(3.26) Правда ли что W2k всегда загружает определённый набор dll, даже если они не используются? Правда. Список этих DLL находится здесь:HKLMSYSTEMCurrentControlSetControlSession ManagerKnownDLLsТеоретически, если Вы уберёте из этого списка лишнее, это может освободить некоторое количество памяти и


Бизнес-ситуации

Из книги Человеческий фактор в программировании автора Константин Ларри Л

Бизнес-ситуации Многие книги, посвященные компьютерному обеспечению, состоят из длинных списков программных средств с кратким описанием особенностей их работы. Если вам повезет, вы найдете описание того, как данный продукт связан с реальным миром.Цель настоящей книги –


46 Полезные ситуации

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

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


3.13. Правда ли что XP всегда загружает определённый набор DLL, даже если они не используются?

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

3.13. Правда ли что XP всегда загружает определённый набор DLL, даже если они не используются? Правда. Список этих DLL находится здесь: HKLMSYSTEMCurrentControlSetControlSession ManagerKnownDLLs Теоретически, если вы уберёте из этого списка лишнее, это может освободить некоторое количество памяти и


Особо критические ситуации

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

Особо критические ситуации Один короткий сигнал при запуске компьютера свидетельствует о том, что каких-либо критических неисправностей не обнаружено. Но если сигналов несколько – значит, программа самодиагностики компьютера обнаружила критическую ошибку, не


20.3.6. В Unix API не используются исключительные ситуации

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

20.3.6. В Unix API не используются исключительные ситуации Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными119. Таким образом, С-функции в Unix API сообщают об ошибках путем возвращения известного


Ситуации отказа

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Ситуации отказа Рассматривая список возможных исключений, полезно определить, когда может встретиться отказ (причина исключения у вызывающей программы):Определение: случаи отказаВызов программы приводит к отказу, если и только если встретилось исключение в процессе


Когда не используются закрепленные объявления

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Когда не используются закрепленные объявления Не всякое объявление вида x: A в классе A следует менять на x: like Current и не в каждой паре компонентов одного типа следует один из них делать опорным, а другой - закрепленным.Закрепленное объявление - это своего рода обязательство


Какие программы используются в этой книге

Из книги Windows 10. Секреты и устройство автора Алмаметов Владимир

Какие программы используются в этой книге Вопрос далеко не праздный, учитывая то, что за программы сегодня приходится платить… Так что же за программы использовал автор?Только бесплатные!— Блокнот — простейший текстовый редактор, стандартно поставляемый в составе


Какие программы используются в этой книге

Из книги автора

Какие программы используются в этой книге Вопрос далеко не праздный, учитывая то, что за программы сегодня приходится платить… Так что же за программы использовал автор?Только бесплатные!— Блокнот — простейший текстовый редактор, стандартно поставляемый в составе