Поделиться через


Практическое руководство. Реализация блоков Try... Catch при операциях ввода-вывода в Visual Basic

Следующий пример кода реализует блок Try...Catch, обрабатывающий исключения Exception, IOException и все исключения, производные от IOException.

Пример

В этом примере каждое исключение проверяется по очереди, от наиболее конкретных к самым общим.

Данный пример доступен также в качестве фрагмента кода IntelliSense. В окне выбора фрагмента кода он находится в разделе Файловая система — Обработка дисков, папок и файлов. Дополнительные сведения см. в разделе Практическое руководство. Вставка фрагментов кода IntelliSense.

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    ' Code to handle DirectoryNotFoundException.
Catch fileNotFound As System.IO.FileNotFoundException
    ' Code to handle FileNotFoundException.
Catch pathTooLong As System.IO.PathTooLongException
    ' Code to handle PathTooLongException.
Catch ioEx As System.IO.IOException
    ' Code to handle IOException.
Catch security As System.Security.SecurityException
    ' Code to handle SecurityException.
Catch ex As Exception
    ' Rethrow exception if anything else has occurred.
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

Компиляция кода

Добавьте код, который требуется выполнить, к блоку Try.

Отказоустойчивость

Используйте этот блок кода в качестве начальной точки для переноса работы с данными в блок Try...Catch. Этот блок Try...Catch предназначен для перехвата и повторного создания всех исключений. Возможно это не самый лучший вариант для вашего проекта. Обсуждение вариантов обработки исключений см. в разделе Рекомендации по использованию фрагментов кода IntelliSense.

Уменьшить вероятность возникновения исключений можно с помощью элементов управления Windows Forms, таких как компоненты Компонент OpenFileDialog (Windows Forms) и Компонент SaveFileDialog (Windows Forms), которые позволяют пользователям выбирать только допустимые имена файлов. Свойство FileInfo.Exists позволяет узнать, существует ли файл, прежде чем пытаться открыть его. Однако использование этих элементов управления и классов не гарантирует полную надежность. В период между моментом выбора пользователем файла и моментом выполнения кода файловая система может измениться. Таким образом, обработка исключений почти всегда необходима при работе с файлами.

Безопасность

Для многих задач работы с файлами сборке требуется уровень привилегий, предоставляемый классом FileIOPermission. Если код выполняется в контексте частичного доверия, исключение может возникнуть из-за недостатка прав доступа. Дополнительные сведения см. в разделе Основы управления доступом для кода. Пользователю также необходим доступ к файлу (если он существует). Дополнительные сведения см. в разделе Общие сведения о технологии ACL.

Не всегда можно уверенно судить о содержимом файла по его расширению. Например, файл Form1.vb может не быть исходным файлом Visual Basic.

См. также

Задачи

Практическое руководство. Фильтрация ошибок в блоке Catch в Visual Basic

Практическое руководство. Проверка наличия у исключения вложенного исключения (Visual Basic)

Ссылки

Оператор Try... Catch... Finally (Visual Basic)

Основные понятия

Рекомендации по использованию фрагментов кода IntelliSense

Обзор структурной обработки исключений в Visual Basic

Выбор между структурной и неструктурной обработкой исключений (Visual Basic)

Другие ресурсы

Задачи обработки исключений (Visual Basic)