Spec-Zone.ru › Ada 95
Справочник по Ada 95

A.13 Исключение при вводе-выводе

Пакет IO_Exceptions определяет исключения, необходимые для предопределенных пакетов ввода-вывода.

Статическая семантика

Пакет библиотеки IO_Exceptions имеет следующее объявление:
package Ada.IO_Exceptions is
pragma Pure(IO_Exceptions);
Status_Error : exception;
Mode_Error : exception;
Name_Error : exception;
Use_Error : exception;
Device_Error : exception;
End_Error : exception;
Data_Error : exception;
Layout_Error : exception;
end Ada.IO_Exceptions;
Если существует более одной ошибки, соответствующее исключение, которое появляется раньше в следующем списке, является тем, которое распространяется.
Исключение Status_Error распространяется при попытке выполнить операцию над файлом, который не открыт, и при попытке открыть файл, который уже открыт.
Исключение Mode_Error распространяется при попытке чтения из файла или проверке конца файла, текущий режим которого Out_File или Append_File, а также при попытке записи в файл, текущий режим которого In_File. В случае Text_IO исключение Mode_Error также распространяется при указании файла, текущий режим которого Out_File или Append_File в вызове Set_Input, Skip_Line, End_Of_Line, Skip_Page или End_Of_Page; и при указании файла, текущий режим которого In_File в вызове Set_Output, Set_Line_Length, Set_Page_Length, Line_Length, Page_Length, New_Line или New_Page.
Исключение Name_Error распространяется при вызове Create или Open, если строка, заданная для параметра Name, не позволяет идентифицировать внешний файл. Например, это исключение распространяется, если строка некорректна, или, в противном случае, если ни один, или более одного внешнего файла соответствует строке.
Исключение Use_Error распространяется, если операция невозможна по причинам, зависящим от характеристик внешнего файла. Например, это исключение распространяется процедурой Create, среди прочих обстоятельств, если заданный режим Out_File, но форма указывает только устройство ввода, если параметр Form указывает недопустимые права доступа или если внешний файл с заданным именем уже существует и перезапись не разрешена.
Исключение Device_Error распространяется, если операция ввода-вывода не может быть завершена из-за неполадок в базовой системе.
Исключение End_Error распространяется при попытке перейти (прочитать) конец файла.
Исключение Data_Error может распространяться процедурой Read (или атрибутом Read), если элемент, который считывается, не может быть интерпретирован как значение требуемого подтипа. Это исключение также распространяется процедурой Get (определенной в пакете Text_IO), если входная последовательность символов не удовлетворяет требуемой синтаксической структуре или если вводимое значение не входит в диапазон требуемого подтипа.
Исключение Layout_Error распространяется (при текстовом вводе-выводе) Col, Line или Page, если возвращаемое значение превышает Count'Last. Исключение Layout_Error также распространяется при выводе путем попытки установить номера столбца или строки, превышающие заданные максимальные длины строки или страницы соответственно (за исключением случаев неограниченного количества). Оно также распространяется при попытке Put слишком большого количества символов в строку.

Требования к документации

Реализация должна документировать условия, при которых Name_Error, Use_Error и Device_Error распространяются.

Разрешения реализации

Если связанная проверка слишком сложная, реализация не обязана распространять Data_Error в качестве части процедуры Read (или атрибута Read), если считанное значение не может быть интерпретировано как значение требуемого подтипа.

Ошибка выполнения

Если элемент, считанный процедурой Read (или атрибутом Read), не может быть интерпретирован как значение требуемого подтипа, но это не обнаруживается и Data_Error не распространяется, то результирующее значение может быть ненормальным, и последующие ссылки на значение могут привести к ошибке выполнения, как описано в 13.9.1.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API