15.5 исключения при вводе-выводеПри выполнении операций ввода-вывода могут быть возбуждены предопределённые исключения. Они описаны в пакете lOJExceptions. Спецификация пакета lOJExceptions: package lOJExceptions is exception; exception; exception; exception; exception; exception; exception; exception; STATUSJERROR : MODEJERROR NAMEJERROR USEJERROR DEVICEJERROR ENDJERROR DATAJERROR LAYOUT ERROR end lOJExceptions ; Исключение Status Error возбуждается при попытке выполнить действие над еще не открытым файлом или при попытке открыть уже открытый файл. Исключение Mode_Error возбуждется при попытке чтения или проверки конца файла вида Out_File , а также при чтении записи в файл вида In_File. procedure Put( File Item Width in File_Type; in Enum; in Field : = Default Width; 25 — Корочкин А, В.
194 Ада 95. Введение в программирование 195 Глава 15. Ввод-вывод
Исключение Name_Error возбуждается при попытке вызова процедур Create и Open , если строка, заданная параметром Name , не позволяет идентифицировать внешний файл. Исключение Use_Error возбуждается при попытке выполнить операцию, не разрешенную по причинам, зависящими от характеристик внешнего файла. Исключение Device_Error возбуждается при невозможности завершения операции вво-вывода из-за неисправности устройств. Исключение End_Error возбуждается при попытке пропустить признак конца файла. Исключение Data_Error возбуждается в процедурах Read ,если вводимая последовательность не соответствует требуемому типу, а в процедурах Get - не соответствует синтаксису или не принадлежит диапазону типа. Исключение Layout_Error возбуждается в текстовом вводу- выводе при вызове функций Col, Line, Page , если возвращаемое зна чение превышает Count'Last; в процедуре Put - при попытке вывести большое количество символов в строку. Ш СОВЕТЫ: * Всегда закрывайте все открытые файлы после окончания их использования. * Используйте константы и переменные в качестве формальных параметров Name и Form в предопределенных пакетах ввода-вывода. * Избегайте ввод-вывода ссылочных типов. * Используйте пакеты SequentialJO и DirectJO вместо StrearrMO при организации гетерогенного ввода-вывода низкого уровня. With Ada.DirectJO ; procedure EXC15_1 is type Post is record X : string ( 1 .. 64 ); end record ; - - Конкретизация пакета package WorkJO is new Ada.DirectJO ( Element_Type = > Post); use WorkJO; ZZ : File_Type ;--используется тип из предопределенного - - пакета Ident: string (1 .. 12) : = "File_15_3"; - - идентификатор - - файла begin Create ( File = > ZZ; Mode = > lnout_File ; Name = > Ident; Form = >""); Close (ZZ); end EXC15 1; 25» |
| Оглавление| |