Partilhar via


Como: Capturar uma exceção no Visual Basic

Este exemplo mostra como usar um bloco Try e Catch para capturar exceções.

Exemplo

Este exemplo mostra como usar um bloco Try…Catch para capturar um OverflowException.

Este exemplo de código também está disponível como um trecho de código IntelliSense.No selecionador de trechos de código, ele está localizado em Visual Basic Language.Para obter mais informações, consulte Como: Inserir trechos em seu código (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

Este exemplo requer:

  • Uma referência ao namespace System.

O exemplo de código a seguir implementa um bloco Try...Catch que trata Exception, IOException, e todas as exceções que derivam de 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

Adicione o código que você deseja executar ao bloco Try.

Programação robusta

Use este bloco de código como um ponto de partida para envolver uma operação de dados em uma instrução Try...Catch.Este bloco Try...Catch foi projetado para capturar e relançar todas as exceções.Essa pode não ser a escolha certa para o seu projeto.Para uma discussão sobre as opções de manipulação de exceção, consulte Práticas Recomendadas para usar Trechos de Código IntelliSense.

Você pode reduzir a probabilidade de exceções usando controles de Windows Forms como os controles de componentes OpenFileDialog componente (Windows Forms) e SaveFileDialog componente (Windows Forms) que limitam as opções de usuário para nomes de arquivo válidos.A propriedade FileInfo.Exists pode verificar se um arquivo existe antes de tentar abri-lo.Contudo, o uso desses controles e classes não é à prova de falhas.O sistema de arquivos pode alterar entre o momento que o usuário seleciona um arquivo e a hora em que o código será executado.Portanto, a manipulação de exceção quase sempre será necessária quando se estiver trabalhando com arquivos.

Segurança

Para muitas tarefas envolvendo arquivos, o assembly requer um nível de privilégio concedido pela classe FileIOPermission.Se você estiver executando em um contexto parcialmente confiável, o código pode lançar uma exceção devido a privilégios insuficientes.Para obter mais informações, consulte Noções Básicas sobre Segurança de Accesso a Código. O usuário também precisa de acesso ao arquivo, se ele existir.Para obter mais informações, consulte Listas de controle de acesso (ACLs).

Não faça decisões sobre o conteúdo do arquivo com base na extensão do nome do arquivo.Por exemplo, o arquivo Form1.vb pode não ser um arquivo de origem Visual Basic.

Consulte também

Tarefas

Como: Lançar uma exceção no Visual Basic

Como: Código de teste com um bloco try … catch no Visual Basic

Como: Limpar recursos com um bloco try … finally no Visual Basic

Como: Filtrar erros em um bloco catch no Visual Basic

Como: Verificar interna Exception da exceção

Solução de problemas de manipulação de exceção

Conceitos

Escolhendo Quando Usar Manipulação de Exceção Estruturada e não Estruturada