Практическое руководство. Реализация блоков 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)