Ада-95. Компилятор GNAT


Искючения ввода/вывода


Все средства организации ввода/вывода Ады полагаются на механизм исключений для сообщения об ошибках, которые возникли в процессе выполнения какой-либо операции ввода/вывода данных.

Описания исключений ввода/вывода находятся в пакете Ada.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;

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

Показанная ниже процедура Robust_Open является примером того, как можно попытаться избежать подобные неприятности.

Сначала, она пытается открыть указанный файл, и если это приводит к ошибке говорящей об отсутствии этого файла, то тогда она пытается его создать:

with Ada.Text_IO; use Ada.Text_IO;

procedure Robust_Open(The_File : in out File_type; Mode : in File_mode; Name : in String) is

begin

Open(The_File, Mode, Name);

exception

when Name_Error => Create(The_File, Mode, Name); end Robust_Open;

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




- Начало -  - Назад -  - Вперед -



Книжный магазин