Как для перехвата исключений в Visual Basic 2005 или Visual Basic .NET

Переводы статьи Переводы статьи
Код статьи: 301283 - Vizualiza?i produsele pentru care se aplic? acest articol.
Microsoft Visual C# 2005 и Microsoft Visual C# .NET версии данной статьи см.308345.

Версия данной статьи для Microsoft Visual Basic 6.0:191474.
Развернуть все | Свернуть все

В этой статье

Аннотация

Перехват и работе с исключениями является стандартной задачи программирования. В этой статье показано, как использоватьtry-catch-finallyблок для перехвата исключения. Atry-catch-finallyблок — «оболочки», можно поместить вокруг любой код, где существует вероятность возникновения исключения.

Atry-catch-finallyблок состоит из следующих разделов:
  • Любой код, который может вызывать исключение помещается внутриtryблок.
  • При возникновении исключенияcatchвведен блок и программа может выполнить соответствующую операцию восстановления или предупреждения.
  • В кодеfinallyблок всегда выполняется и можно выполнить очистку после возникновения исключения. надписьюfinallyблок не является обязательным.

Требования

В приведенном ниже списке перечислены требования к оборудованию, сети, программному обеспечению и пакетам обновления.:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server или Microsoft Windows NT 4.0 Server
  • Microsoft Visual Basic 2005 или Microsoft Visual Basic .NET.

Пошаговый пример

  1. Создайте новое консольное приложение в Visual Basic 2005 или Visual Basic .NET.
  2. Вставьте в процедуру Sub Main в образце кода ниже. Пример объявляет и инициализирует три переменные, в котором инициализации "k" приведет к ошибке.
    ' This code generates an exception.
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer = i/j ' Error on this line.
    					
  3. Нажмите клавишу F5 для просмотра исключений.
  4. Переносtry-catchинструкции по записи ошибки в коде. Следующий код перехватывает все ошибки, возникающие в коде и отображается общее сообщение об ошибке. Замените код в процедуру Sub Main следующим кодом.
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    	Console.WriteLine("An error occurred.")
    End Try
  5. Нажмите клавиши CTRL + F5 для запуска проекта. Обратите внимание, что сообщение об ошибке изcatchотображается блока.
  6. Если некоторые очистки или действия должна выполняться независимо от того, сообщение об ошибке, используйтеfinallyчастьtry-catch-finallyоператор. Код вfinallyчасть инструкции выполняется всегда, независимо от того, исключение. Следующий код отображает "это всегда печатается отчет" в консоли, даже если бы ошибки не произошло. Замените код Sub Main следующим кодом.
    ' This code shows how to catch an exception.	
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch
    	Console.WriteLine("An error occurred.")
    Finally   ' This section is performed regardless of the above processing.
    	Console.WriteLine()
    	Console.WriteLine("This statement is always printed")
    End Try
    					
  7. Нажмите клавиши CTRL + F5 для запуска проекта.
  8. Можно использовать объект исключения сcatchИнструкция для получения сведений об исключении. Исключение содержит ряд свойств, которые могут помочь в идентификации справки, источник или даже стек сведения об исключении. Эта информация может быть очень полезно для отслеживания работы исходную причину исключения или предоставляя лучшее объяснение его источника. Следующий пример перехватывает исключение и выводит сообщение об ошибке. Как и ранее, можно заменить код в Sub Main процедуру следующим кодом.

    Пример 1.
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch e As Exception  ' Perform code that deals with the exception
                          ' or informs the user what occurred.
    	Console.WriteLine("The following error occurred:")
    	Console.WriteLine(e.ToString())  ' Print the error message to the user.
    
    Finally   ' This section is performed regardless of the above processing.
    	Console.WriteLine()
    	Console.WriteLine("This statement is always printed")
    End Try
    					
    Пример 2.
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch e As Exception  ' Perform code that deals with the exception
                          ' or informs the user what occurred.
            Console.WriteLine("The following error occurred:")
            Console.WriteLine( e.Message )     ' Print the error message.
            Console.WriteLine( e.Source )      ' Name of application or object
                                               ' that caused the error
            Console.WriteLine( e.StackTrace )  ' String that contains the stack 
                                               ' trace for this exception
    Finally   ' This section is performed regardless of the above processing.
            Console.WriteLine()
            Console.WriteLine("This statement is always printed")
    End Try
    					
  9. До этого момента обработаны с определенным вариантом без конкретного исключения. Тем не менее если вы заранее знаете, какого рода исключение происходит в том случае, можно перехватить исключение, ожидаемой и обработать его соответствующим образом. Затем можно использовать несколькоCatchблоки для перехвата всех исключений, а также работать с ними. Это показано в следующем примере.
    Module Module1
    Sub Main()
    
    ' Attempt to do some file processing.
    ' This can cause a number of potential exceptions.
    ' Note that you can use the specific exceptions to get extra information about that exception,
    ' but this example focuses on showing control execution for those exceptions.
    
    Try
    	File.Create("c:/temp/test.txt")  ' Can fail for a number of reasons
    
    Catch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.
    	Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")
    
    Catch se As System.Security.SecurityException ' You do not have the appropriate permission
                                                  ' to take this action.
    	Console.WriteLine("You don't have the security permissions to take this action!")
    
    Catch e As Exception    ' Catch all other exceptions.
    	Console.WriteLine( e.ToString() )  ' Print the standard exception information.
    End Try
    End Sub
    End Module
    Из-за конфигурации компьютера могут отличаться, пример на этом этапе может и не может вызывать исключение. Для принудительного исключения операций ввода-ВЫВОДА, измените путь к файлу в папке, не существует на локальном компьютере.

Ссылки

Для получения дополнительных сведений см. в Microsoft .NET Framework Software Development Kit (SDK).

Свойства

Код статьи: 301283 - Последний отзыв: 22 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
Ключевые слова: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB301283 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:301283

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

 

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