14.4. ИСКЛЮЧЕНИЯ ПРИ ВВОДЕ-ВЫВОДЕ

В этом разделе описаны исключения, которые могут быть возбуждены при выполнении операций ввода-вывода. Они описаны в пакете IO_EXCEPTIONS; определение этого пакета приведено в разд. 14.5. Этот пакет упоминается в спецификаторах контекста каждого из трех описанных пакетов ввода-вывода. Для исключений NAME_ERROR, USE_ERROR и DEVICE_ERROR описаны общие характеристики условий возбуждения этих исключений; детальное описание должно быть приведено в приложении F. Если существует более чем одно ошибочное условие, соответствующее одному исключению, то возбуждается то из них, которое раньше описано в данном ниже списке исключений.

Исключение STATUS_ERROR возбуждается при попытке выполнить действия над еще не открытым файлом или при попытке открыть уже открытый файл.

Исключение MODE_ERROR возбуждается при попытке чтения или проверке конца файла с текущим видом OUT_FILE, а также при попытке записи в файл с текущим видом IN_FILE. Для пакета TEXT_IO исключение MODE_ERROR возбуждается также при использовании файла с текущим видом OUT_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 такое исключение может быть возбуждено при задании параметром MODE вида OUT_FILE, а параметром FORM устройства, допускающего только ввод, либо при задании параметром FORM неверных прав доступа, либо если внешний файл с данным именем уже существует и перезапись недопустима.

Исключение DEVICE_ERROR возбуждается при невозможности завершения операции ввода-вывода из-за неисправностей в используемой системе.

Исключение END_ERROR возбуждается при попытке пропустить признак конца файла (чтение за концом файла).

Исключение DATA_ERROR может быть возбуждено процедурой READ, если читаемый элемент нельзя интерпретировать как значение требуемого типа. Это же исключение возбуждается процедурой GET (определенной в пакете TEXT_IO), если введенная последовательность символов не соответствует требуемому синтаксису или если введенное значение не принадлежит диапазону требуемого типа или подтипа.

Исключение LAYOUT_ERROR возбуждается (в текстовом вводе-выводе) при вызове функции COL, LINE или PAGE, если возвращаемое значение превышает COUNT'LAST. Это же исключение возбуждается при выводе: при попытке установить номер столбца или строчки, превышающий заданную максимальную длину строчки или страницы (кроме случая неограниченной длины строчки или страницы). Оно также возбуждается процедурой PUT при попытке вывести в строку слишком большое количество символов.

Ссыпки: вид IN_FILE 14.1, вид OUT_FILE 14.1, внешний файл 14.1, пакет IO_EXCEPTIONS14.5. пакет TEXT_IO 14.3, процедура GET 14.3.5, процедура CREATE 14.2.1, процедура NEW_LINE 14.3.4, процедура NEW-PAGE 14.3.4, процедура OPEN 14.2.1, процедура PUT 14.3.5, процедура READ 14.2.2, 14.2.3, процедура SET-INPUT 14.3.2, процедура SET_LINE-LENGTH 14.3.3, процедура SET-PAGE-LENGTH 14.3.3, процедура SET-OUTPUT 14.3.2, процедура SKIP_LINE 14.3.4, процедура SKIP-PAGE 14.3,4, строка FORM 14.1, строка NAME 14.1, файл 14.1, функция COL 14.3.4, функция END-OF_LINE 14.3.4, функция END-OF-PAGE 14.3.4, функция LINE 14.3.4, функция LINE-LENGTH 14.3.4, функция PAGE 14.3.4, функция PAGE-LENGTH 14.3.4.