Обработка исключений при работе с файлами


 

Некоторые специализированные типы исключений-наследников класс Exception, которые могут быть использованы при работе с файлами:

· IOException: является базовым классом для исключений в пространстве имен System.IO, поэтому его нужно обрабатывать в блоке catch после обработки других исключений, связанных с вводом-выводом.

· UnauthorizedAccessException: возникает в случае запрета доступа операционной системой из-за ошибки ввода-вывода или особого типа ошибки безопасности.

· FileNotFoundException: выдается при попытке получить доступ к файлу или каталогу, которых нет на диске.

· DirectoryNotFoundException: создается, когда не удается найти часть файла или каталога.

· PathTooLongException: создается, когда путь или полное имя файла длиннее, чем максимальная длина, определенная системой.

· DriveNotFoundException: вызывается при попытке доступа к недоступному диску или данным совместного использования.

· NotSupportedException: путь не указан в допустимом формате

· OperationCanceledException: выдается в потоке при отмене операции, выполняемой этим потоком.

· SecurityException: возникает, когда вызывающий объект не имеет разрешений, необходимых для доступа к ресурсу.

· ArgumentException: выбрасывается, если один из передаваемых методу аргументов является недопустимым.

 

Например, если надо проверить, существует ли файл без использования метода File.Exists(), можно попробовать открыть файл в блоке try, а затем поймать исключение FileNotFoundException:

 

try

{

// Read in non-existent file.

using (StreamReader reader = new StreamReader("TextFile1.txt"))

{

reader.ReadToEnd();

}

}

catch (FileNotFoundException ex)

{

Console.WriteLine("The file don't exist!");

// Write error.

Console.WriteLine(ex.Message);

}

Или выбросить принудительно это исключение:

try

{

if (!File.Exists("FilePath"))

throw new FileNotFoundException();

}

catch (FileNotFoundException)

{

Console.WriteLine("The file is not found in the specified location");

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

Задание

 

1. Создать текстовый документ и ввести в несколько строк (не менее 5), соответствующих решению индивидуальной задачи по обработке строк из лабораторной работы №5. Файл сохранить в формате UTF-8 с заданным именем и расширением (см. табл. 10).

2. Модифицировать программу, разработанную при выполнении лабораторной работы №5 так, чтобы исходные строки для обработки считывались из текстового файла исходных данных, созданного при выполнении п.1 этого задания, а результаты обработки выводились в текстовый файл результатов с заданным именем и расширением (см. табл. 10). При этом должны иметь место следующие особенности:

­ чтение исходных данных из файла выполнять в методе Main().

­ запись результатов обработки в файл выполнять в пользовательской функции.

­ при выводе в файл следовать инструкции (см. табл. 10).

­ осуществление контроля исключительных ситуаций при работе с файлами.

3. Модифицировать блок-схемы алгоритмов для метода Main() и пользовательской функции.

4. Протестировать обработку контролируемых исключений.

5. В отчете привести:

­ индивидуальное задание на лабораторную работу №5;

­ модифицированные блок-схемы и листинг программы;

­ распечатки исходного файла и файла результатов;

­ результаты обработки исключений.

6. Сделать вывод по работе.

 

Таблица 10. Варианты индивидуальных заданий к лабораторной работе №6

№ вар. Файл исх. данных Файл результатов Инструкция по выводу результатов в файл
data.dat lab6.txt В конец файла с новой строки добавить общее количество преобразованных предложений.
lab6.dat lab6.res В начале файла в отдельной строке вывести заданный номер слова n. В конец файла результатов с новой строки добавить общее количество выделенных слов.
lab6.in lab6.out В файле результатов четырехзначное натуральное число выводить с новой строки, списки отделить друг от друга пустой строкой
lab6.d1 lab6.d2 В конец файла с новой строки добавить общее количество слов
lab6_in.txt lab6_out.txt В начале файла в отдельной строке вывести заданный номер слова n. Обработанные строки выводить сплошным текстом (без перехода на новую строку), разделяя их рассчитанным числовым показателем.
lab6_d.txt lab6_r.txt Диаграммы в файле результатов пронумеровать в соответствии с порядковыми номерами строк исходного файла. Номер выводить в отдельной строке перед диаграммой в следующем формате: Диаграмма для предложения #.
lab6.str lab6.lft Обнаруженные символы выводить сплошным, разделяя их соответствующим номером позиции.
lab6.str lab6.rgh В файле результатов в конце каждой обработанной строки добавить найденную разность количеств сделанных удалений и замен.
lab6_1.txt lab6_2.txt В начале файла в отдельной строке вывести заданный параметр n. В конец файла с новой строки добавить общее фактическое количество замен.
lab6.s1 lab6.s2 В начале файла в отдельной строке вывести заданный параметр n. Обработанные строки выводить сплошным текстом (без перехода на новую строку), разделяя их рассчитанным числовым показателем.
lab6d.s1 lab6r.s2 В файле результатов выделенные части строки разделить символом табуляции (\t). В начале файла в отдельной строке вывести заданный символ.
data.dat lab6.txt В файле результатов после каждой обработанной строки выводить в отдельной строке найденный индекс
lab6.dat lab6.res В файле результатов выводить исходную и обработанную строку, разделенную символом наклонной черты
lab6.in lab6.out В файле результатов выводить исходную и обработанную строки в двойных кавычках, разделенные символом «минус»
lab6.str lab6.rgh В файле результатов в конце каждой результатной строки через пробел вывести число перестановок слов
lab6_1.txt lab6_2.txt В файле результатов в конце каждой результатной строки через пробел вывести суммарное число удаленных символов
lab6d.s1 lab6r.s2 В файле результатов в конце каждой результатной строки через пробел вывести суммарное число звездочек, после чего через пробел выводить следующую строку
lab6.in lab6.out Перед каждой результатной строкой выводить количество замененных чисел
lab6.d1 lab6.d2 В файле результатов после каждой результатной строки выводить с новой строки число удаленных букв и число удаленных знаков препинания, разделенных символом косой черты
lab6_in.txt lab6_out.txt В начале файла в отдельной строке вывести через пробел заданную длину и заданный символ
lab6_d.txt lab6_r.txt В конце каждой результатной строки вывести число введенных пробелов
lab6.str lab6.rgh В начале каждой результатной строки вывести число введенных пробелов

 



Дата добавления: 2021-12-14; просмотров: 345;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.