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 de código de IntelliSense.

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 Component (Windows Forms) e SaveFileDialog Component (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 ACL Technology Overview.

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 em Visual Basic

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

Como: Limpar recursos com um bloco Try …Finally no Visual Basic

Como: Filtrar os erros em um bloco Catch no Visual Basic

Como: Verifique a exceção interna de uma exceção (Visual Basic)

A solução de problemas (Visual Basic) de manipulação de exceção

Conceitos

Escolhendo quando usar (Visual Basic) de manipulação de exceção estruturada e não estruturada