Como capturar exceções no Visual Basic 2005 ou no Visual Basic .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 301283 - Exibir os produtos aos quais esse artigo se aplica.
Para obter um Microsoft Visual translation from VPE for Csharp 2005 e Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 308345.

Para uma versão deste artigo do Microsoft Visual Basic 6.0, consulte 191474.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Captura e lidar com exceções é uma tarefa de programação padrão. Este artigo demonstra como usar um bloco try-catch-finally para capturar uma exceção. Um bloco try-catch-finally é um "wrapper" colocar em torno de qualquer código onde existe a possibilidade de uma exceção.

Um bloco try-catch-finally consiste as seções a seguir:
  • Qualquer código que pode lançar uma exceção é colocado dentro do bloco try .
  • Se uma exceção é lançada, o bloco catch é inserido e o programa pode executar a operação apropriada para recuperar ou alerta o usuário.
  • O código no bloco finally será sempre executado e pode executar a limpeza depois que ocorreu uma exceção. O bloco finally é opcional.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, o Windows 2000 Server ou Microsoft Windows NT 4.0 Server
  • O Microsoft Visual Basic 2005 ou Microsoft Visual Basic .NET

Exemplo passo a passo

  1. Crie um novo aplicativo de console no Visual Basic 2005 ou no Visual Basic. NET.
  2. No procedimento Sub Main, insira o exemplo de código que segue. O exemplo declara e inicializa três variáveis, no qual a inicialização do "k" faz com que um erro.
    ' 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. Pressione a tecla F5 para exibir a exceção.
  4. Coloque uma instrução try-catch em torno de seu código para capturar o erro. O código a seguir captura todos os erros que são lançados no código e exibe uma mensagem de erro genérico. Substitua o código no procedimento Sub Main com o código a seguir.
    ' 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. Pressione CTRL+F5 para executar o projeto. Observe que a mensagem de erro de bloco catch é exibida.
  6. Se alguns limpeza ou pós-processamento precisa ser feito, independentemente de um erro, use a parte Finalmente da instrução try-catch-finally . Código na parte Finalmente a instrução sempre é executado, independentemente de uma exceção. O código a seguir exibe "essa instrução é sempre impresso" no console, mesmo se nenhum erro. Substitua o código de Sub Main com o código a seguir.
    ' 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. Pressione CTRL+F5 para executar o projeto.
  8. Você pode usar o objeto de exceção com a instrução catch para recuperar detalhes sobre a exceção. Uma exceção tem um número de propriedades que podem ajudá-lo a identificar Ajuda, fonte ou até mesmo pilha sobre uma exceção. Essas informações podem ser muito útil para rastrear a causa original da exceção ou fornecer uma explicação melhor da sua fonte. O exemplo a seguir captura uma exceção e oferece uma mensagem de erro específico. Como antes, você pode substituir o código na Sub Main procedimento com o código a seguir.

    exemplo 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
    					
    Example 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. Até este ponto, você tem lidou com o caso específico de uma exceção não-específica. No entanto, se você souber antecipadamente que tipo de exceção está prestes a ocorrer, pode capturar a exceção prevista e processá-lo adequadamente. Em seguida, você pode usar vários blocos Catch para capturar todas as outras exceções e lidar com eles como bem. O exemplo a seguir demonstra isso.
    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
    como as configurações do computador podem ser diferentes, o exemplo nesta etapa pode ou não pode lançar uma exceção. Se você quiser forçar uma exceção de E/S, altere o caminho do arquivo para uma pasta que não existe no computador.

Referências

Para obter mais informações, consulte o Microsoft .NET Framework Software Development Kit (SDK).

Propriedades

ID do artigo: 301283 - Última revisão: quarta-feira, 6 de dezembro de 2006 - Revisão: 5.5
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palavras-chave: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB301283 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 301283

Submeter comentários

 

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