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


Практическое руководство. Перехват исключения в 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

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

Устранение неполадок при обработке исключений

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

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