В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Использование структурированных исключений обработки в Visual Basic .NET или Visual Basic 2005

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 315965
Аннотация
В этой статье показано, как использовать структурную обработку в Visual Basic .NET или Visual Basic 2005 исключений.

back to the top

Требования

В следующем списке представлены рекомендуемое оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления, которые будут необходимы.
  • Visual Basic .NET или Visual Basic 2005
Предполагается, что вы знакомы со следующими темами:
  • Visual Basic .NET или Visual Basic 2005
  • Microsoft Visual Studio .NET и Microsoft Visual Studio 2005
back to the top

Структурированная обработка исключений

Visual Basic .NET или Visual Basic 2005 предоставляет структурную обработку исключений, предоставляющий мощные, более легко читаемый альтернативу «On Error Goto» обработки ошибок, которая доступна в предыдущих версиях для Microsoft Visual Basic. Структурированная обработка исключений выполняется более результативно, так как оно позволяет вложить обработчики ошибок внутри других обработчиков ошибок в той же процедуре. Кроме того структурная обработка исключений использует блок синтаксис, подобный , если...Еще...End If инструкции. Это делает код Visual Basic .NET и Visual Basic 2005, более удобным для чтения и простым для использования.

Примечание: Visual Basic .NET или Visual Basic 2005 сохраняет синтаксис "On Error Goto" для обеспечения обратной совместимости. Этот синтаксис по-прежнему можно использовать в коде Visual Basic .NET или Visual Basic 2005. Нельзя использовать структурную обработку исключений и операторы On Error в той же процедуре. При написании нового кода, корпорация Майкрософт рекомендует использовать структурную обработку исключений.

Далее представлен базовый синтаксис структурной обработки исключений.
Try   'Code that may raise an error.Catch   'Code to handle the error.Finally   'Code to do any final clean up.End Try				
Требуются операторы Try и End Try . Операторы Catch и Finally не являются обязательными, но должен включать по крайней мере один из них в коде. Можно также указать несколько операторов Catch , чтобы каждый блок Catch обрабатывает конкретную ошибку.

back to the top

Перехват исключения

  1. Запустите Visual Studio 2005 или Visual Studio .NET.
  2. Создайте новый проект консольного приложения в Visual Basic .NET или Visual Basic 2005.
  3. В процедуру Sub Main добавьте следующий код:
    Dim a As Integer = 0Dim b As Integer = 0Dim c As Integer = 0Try  a = b \ cCatch exc As Exception  Console.WriteLine("A run-time error occurred")Finally  Console.ReadLine()End Try					
  4. В меню Отладка выберите команду Пуск для запуска приложения. В коде предпринимается попытка деления числа на ноль. Это недопустимая операция, которая вызывает деление на ноль исключение. К счастью блок Catch перехватывает эту ошибку, и в окне консоли отображается следующее сообщение об ошибке:
    A run-time error has occurred						
  5. Закройте окно консоли.
back to the top

Перехват исключений, несколько

В этом разделе показано, как использовать несколько операторов Catch для обработки различных ошибок.
  1. Откройте проект консольного приложения, созданный в предыдущем разделе.
  2. В процедуру Sub Main замените код, который был скопирован в предыдущем разделе, с помощью следующего кода:
    Dim a As Integer = 2147483647Dim b As Integer = 0Dim c As Integer = 0Try  a += 1Catch exc As DivideByZeroException  Console.WriteLine("Error: Divide by zero")Catch exc As OverflowException  Console.WriteLine("Error: Overflow")Finally  Console.ReadLine()End Try						
    Этот код включает два блока Catch : один для перехвата предыдущей ошибки деления на ноль и один для обнаружения новых ошибок переполнения.
  3. В меню Отладка выберите команду Пуск для запуска приложения. В окне консоли отображается следующее сообщение об ошибке:
    Error: Overflow						
  4. Закройте окно консоли.
  5. Поскольку не всегда можно предугадать каждой ошибке, возникающей, можно добавить блок Catch все непредвиденные исключения. Например добавьте следующий код перед оператором Finally для перехвата любых непредвиденных ошибок и отображается соответствующее сообщение об ошибке:
    Catch exc As ExceptionConsole.WriteLine("Error: " & exc.Message)					
  6. В меню файл выберите команду Закрыть решение.
back to the top

Исключение

Структурированная обработка исключений используется оператор Catch для перехвата исключения. Структурированная обработка исключений также предоставляет способ создания исключения. Например удобно создать исключение при выполнении проверки данных внутри процедуру Свойства Set так, как нужно вызвать ошибку, если бизнес-правило нарушается.
  1. Запустите Visual Studio 2005 или Visual Studio .NET.
  2. Создайте новый проект консольного приложения в Visual Basic .NET или Visual Basic 2005.
  3. В меню проект выберите команду Добавить класс.
  4. Введите в окне Добавление нового элементаclsPerson.vb в поле имя , а затем щелкните ОК.
  5. Добавьте следующий код в clsPerson открытый класс...End Class инструкции:
    Private mintAge As IntegerPublic Property Age() As Integer  Get    Age = mintAge  End Get  Set(ByVal Value As Integer)    If Value >= 0 Then      mintAge = Value    Else      Throw New ArgumentException ("Age cannot be negative")    End If  End SetEnd Property						
    Этот код создает свойство Age . Так как пользователь не может иметь отрицательное возраст, возникает ошибка при попытке пользователя класса значение возраста число, которое меньше нуля.
  6. В процедуре Sub Main в модуле Module1.vb добавьте следующий код:
    Dim p As New clsPerson()Try  p.Age = -1Catch exc As Exception  Console.WriteLine(exc.Message)Finally  Console.ReadLine()End Try					
  7. В меню Отладка выберите команду Пуск для запуска приложения. В окне консоли отображается следующее сообщение об ошибке:
    Age cannot be negative						
  8. Закройте окно консоли.
back to the top

Полный пример кода

Перехват исключения

Module Module1  Sub Main()    Dim a As Integer = 0    Dim b As Integer = 0    Dim c As Integer = 0    Try      a = b \ c    Catch exc As Exception      Console.WriteLine("A run-time error occurred")    Finally      Console.ReadLine()    End Try  End SubEnd Module				
back to the top

Перехват исключений, несколько

Module Module1  Sub Main()    Dim a As Integer = 2147483647    Dim b As Integer = 0    Dim c As Integer = 0    Try      a += 1    Catch exc As DivideByZeroException      Console.WriteLine("Error: Divide by zero")    Catch exc As OverflowException      Console.WriteLine("Error: Overflow")    Catch exc As Exception      Console.WriteLine("Error: " & exc.Message)    Finally      Console.ReadLine()    End Try  End SubEnd Module				
back to the top

Исключение

Module Module1  Sub Main()    Dim p As New clsPerson()    Try      p.Age = -1    Catch exc As Exception      Console.WriteLine(exc.Message)    Finally      Console.ReadLine()    End Try  End SubEnd ModulePublic Class clsPerson  Private mintAge As Integer  Public Property Age() As Integer    Get      Age = mintAge    End Get    Set(ByVal Value As Integer)      If Value >= 0 Then        mintAge = Value      Else        Throw New ApplicationException("Age cannot be negative")      End If    End Set  End PropertyEnd Class				
back to the top

ССЫЛКИ

Дополнительную информацию можно найти на следующих веб-узлов корпорации Майкрософт:
VB.NET способ обработки ошибок: живущих с исключениями (статья Разработчиков Visual Basic )
http://MSDN.Microsoft.com/en-us/library/aa227603 (v=vs.60).aspx

Как перехватить исключение
http://MSDN.Microsoft.com/en-us/library/ys1b32h3 (v=vs.80).aspx

Как создать исключение
http://MSDN.Microsoft.com/en-us/library/z7w9ff54 (v=vs.80).aspx

back to the top

Свойства

Номер статьи: 315965 — последний просмотр: 10/29/2013 01:53:00 — редакция: 3.0

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315965 KbMtru
Отзывы и предложения