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

Переводы статьи Переводы статьи
Код статьи: 315965 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

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

Требования

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

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

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 обрабатывает конкретную ошибку.

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

  1. Запустите Visual Studio 2005 или Visual Studio .NET.
  2. Создайте новый проект консольного приложения в Visual Basic .NET или Visual Basic 2005.
  3. В процедуру 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
    					
  4. В меню Отладка выберите команду Пуск для запуска приложения. В коде предпринимается попытка деления числа на ноль. Это недопустимая операция, которая вызывает деление на ноль исключение. К счастью блок Catch перехватывает эту ошибку, и в окне консоли отображается следующее сообщение об ошибке:
    A run-time error has occurred
    						
  5. Закройте окно консоли.

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

В этом разделе показано, как использовать несколько операторов Catch для обработки различных ошибок.
  1. Откройте проект консольного приложения, созданный в предыдущем разделе.
  2. В процедуру 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")
    Finally
      Console.ReadLine()
    End Try
    						
    Этот код включает два блока Catch : один для перехвата предыдущей ошибки деления на ноль и один для обнаружения новых ошибок переполнения.
  3. В меню Отладка выберите команду Пуск для запуска приложения. В окне консоли отображается следующее сообщение об ошибке:
    Error: Overflow
    						
  4. Закройте окно консоли.
  5. Поскольку не всегда можно предугадать каждой ошибке, возникающей, можно добавить блок Catch все непредвиденные исключения. Например добавьте следующий код перед оператором Finally для перехвата любых непредвиденных ошибок и отображается соответствующее сообщение об ошибке:
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. В меню файл выберите команду Закрыть решение.

Исключение

Структурированная обработка исключений используется оператор 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 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 ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    Этот код создает свойство Age . Так как пользователь не может иметь отрицательное возраст, возникает ошибка при попытке пользователя класса значение возраста число, которое меньше нуля.
  6. В процедуре Sub Main в модуле Module1.vb добавьте следующий код:
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. В меню Отладка выберите команду Пуск для запуска приложения. В окне консоли отображается следующее сообщение об ошибке:
    Age cannot be negative
    						
  8. Закройте окно консоли.

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

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

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 Sub

End Module
				

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

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 Sub

End Module
				

Исключение

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 Sub

End Module

Public 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 Property

End Class
				

ССЫЛКИ

Дополнительную информацию можно найти на следующих веб-узлов корпорации Майкрософт:
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

Свойства

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

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com