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

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 также распространяется при выводе при попытке установить номера столбцов или строк, превышающие указанные максимальные длины строк или страниц соответственно (за исключением случаев неограниченности). Оно также распространяется при попытке передать слишком много символов в строку.

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

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

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

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

Ошибочное выполнение

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


Spec-Zone.ru

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