Практическое руководство. Перехват исключения в Visual Basic
Обновлен: Ноябрь 2007
В этом примере показано использование блока Try...Catch для перехвата исключений.
Пример
В этом примере показано использование блока Try…Catch для перехвата исключения OverflowException.
Данный пример также доступен в виде фрагмента кода IntelliSense. В окне выбора фрагмента кода он находится в разделе Язык Visual Basic. Дополнительные сведения см. в разделе Практическое руководство. Вставка фрагментов в код (Visual Basic).
Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
MsgBox("Attempt to divide by zero resulted in overflow")
End Try
Для этого примера требуется:
- Ссылка на пространство имен System.
Следующий пример кода реализует блок Try...Catch, обрабатывающий исключения Exception, IOException и все исключения, производные от IOException.
Try
' Add code for your I/O task here.
Catch dirNotFound As System.IO.DirectoryNotFoundException
Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
Throw pathTooLong
Catch ioEx As System.IO.IOException
Throw ioEx
Catch security As System.Security.SecurityException
Throw security
Catch ex As Exception
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.
См. также
Задачи
Практическое руководство. Выброс исключения в Visual Basic
Практическое руководство. Проверка кода с помощью блока Try… Catch в Visual Basic
Практическое руководство. Очистка ресурсов при помощи блока Try… Finally в Visual Basic
Практическое руководство. Фильтрация ошибок в блоке Catch в Visual Basic
Практическое руководство. Проверка наличия у исключения вложенного исключения
Устранение неполадок при обработке исключений
Основные понятия
Выбор между структурной и неструктурной обработкой исключений