NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalTutoriaisHerbertgois : Programandovbnet013
Quer receber novidades e e-books gratuitos?

FILTRO DE TUTORIAIS:


Programando com VB.NET

 

GERENCIANDO ERROS E EXCEÇÕES (Continuação)

 

Para concluir o assunto Gerenciando Erros e Exceções neste tutorial vamos aprender como usar blocos Try...Catch aninhados, o objeto Err, como você pode criar seus próprios erros e como programar defensivamente. Além disso vai aprender como usar o Exit Try.

 

USANDO TRY...CATCH ANINHADOS

 

Podemos aninhar - colocar blocos de Try...Catch um dentro de outro - para criar estruturas de tratamento mais avançadas, como o exemplo:

 

Try

  PictureBox1.Image = System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

Catch

  MsgBox(“Insira o disquete no drive A”)

 Try

 PictureBox1.Image =  System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

 Catch

  MsgBox(“Falha ao abrir o arquivo”)

  Button1.Enabled = False

 End Try

End Try

 

A primeira mensagem de erro pede para o usuário inserir o disque e clicar em OK, se ele o fizer o programa tenta ler o arquivo, se não for possível emite a mensagem de Falha e desabilita o Button1.

 

Vamos fazer esse exemplo para você ver a diferença do que tínhamos feito até aqui.

 

1 - Ainda com o programa que abre o arquivo do disquete (veja tutorial anterior), modifique o código do evento do Button1 para o exemplo acima. Vai ficar assim:

 

 

2 - Execute aplicação e sem o disco no drive clique no botão Testar Drive.

 

A seguinte mensagem aparece:

 

 

3 - Insira o disco no drive e clique em OK.

 

 

Ele carrega a imagem e a exibe.

 

4 - Agora tire novamente o disco do drive e clique no botão.

 

5 - Sem colocar o disco no drive clique em OK.

 

A seguinte mensagem aparece.

 

 

6 - Clique em OK.

 

Agora o Form1 é mostrado com o Button1 desabilitado.

 

 

O código responsável por desabilitar o Button1 é o seguinte:

 

      Button1.Enabled = False

 

O OBJETO ERR

 

O objeto Err do Visual Basic contém informações sobre os erros. Suas propriedades mais importantes são Number e Description, que mostram o número do erro e sua descrição respectivamente.

 

A seguinte tabela mostra os erros mais comuns e a mensagem de descrição padrão (em inglês).

 

 

Vamos continuar usando o exemplo anterior, o exemplo da imagem no drive de disquete.

 

1 - Mude o código do evento do Button1 para o seguinte:

 

Try

            PictureBox1.Image = System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

        Catch

            MsgBox(Err.Number & “ “ & Err.Description)

        End Try

 

Agora a mensagem que vamos exibir é o número do erro seguido da descrição do mesmo.

 

2 - Execute o programa.

 

3 - Sem o disco no drive, clique no botão Testar Drive.

 

 

Isso exibe o número e descrição do erro.

 

Quando sabemos os números dos erros que podem ocorrer no nosso programa, o Visual Basic.NET permite que usemos o objeto Err junto com o Catch, assim podemos ter código de tratamento diferenciado dependendo do erro que ocorreu. Exemplo:

 

        Try

            PictureBox1.Image = System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

        Catch When Err.Number = 53

            MsgBox(“Insira o disquete no drive A”)

        Catch When Err.Number = 7

            MsgBox(“Verifique se o arquivo é realmente uma imagem”)

        Catch

            MsgBox(“Não foi possivel abrir o arquivo”)

        End Try

 

Como pode ver com as propriedades Number e Description do objeto Err você pode escrever sofisticados códigos de tratamento de erros para suas aplicações.

 

GERANDO SEUS PRÓPRIOS ERROS

 

Para testes e alguns outros usos especiais você pode gerar seus próprios erros de runtime no seu programa. Essa técnica é conhecida como “throwing” ou “raising” exceções. Para isso você usa o método Raise do objeto Err com um dos números de erro da tabela apresentada no item 6 anteriormente neste capitulo.

 

Exemplo:

 

        Try

            Err.Raise(61)

        Catch When Err.Number = 61

            MsgBox(“Erro: Disco Cheio”)

        End Try

 

Você também pode usar o Throw para criar suas próprias exceções, como no seguinte exemplo:

 

        Dim x As Integer = 0

        Try

            If x = 0 Then

                Throw New Exception(“x é igual a zero”)

            End If

        Catch

            MsgBox(“Erro: “ & Err.Description)

        End Try

 

O exemplo acima gera uma exceção se o conteúdo da variável x for igual a 0 e o Catch trata a mesma normalmente.

 

PROGRAMAÇÃO DEFENSIVA

 

Conhecemos por programação defensiva a iniciativa do programador de escrever seu código protegendo-o de erros de runtime. Exemplo:

 

        If System.IO.File.Exists(“a:\inverno.jpg”) Then

            PictureBox1.Image = System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

        Else

            MsgBox(“Não é possivel abrir o arquivo no drive A”)

        End If

 

O código acima usa a o método File.Exists para verificar se o arquivo existe antes de tentar abri-lo.

 

O IF não é uma estrutura de tratamento de erros, porque não previne os erros de runtime, no entanto ele permite técnicas de validação.

 

A pergunta aqui é a seguinte: Quando utilizo programação defensiva preciso usar os blocos de tratamento de erros?

 

A resposta depende de com que freqüência você acha que o problema vai ocorrer no programa que você esta criando. Se o erro de runtime for ocorrer menos de 25% das vezes que o código for executado o tratamento de erros é a forma mais eficiente de tratar o erro. Os Try...Catch é essencial se você tem mais do que uma condição para testar também, e se você quer privar os usuários de várias questões a serem respondidas para prevenir os erros.

 

No entanto se a estimativa do erro ocorrer for mais de 25% da vezes, a programação defensiva é bem eficaz para diminuir a quantidade de exceções.

 

Mas o ideal é o uso das duas, tanto da programação defensiva como dos blocos Try...Catch.

 

EXIT TRY

 

Para finalizar suponha que o usuário esta sem o disco e tente abrir o arquivo, não sendo possivem a exceção acontece e consequentemente o erro de runtime, um bloco Try...Cath trata o erro, mas novamente o usuario clica no botão e o erro acontece novamente, é tratado, e assim sucessivamente.

 

Para evitar esse problema podemos criar uma variavel que armazena o numero de vezes que o Catch foi executado, chegando a um número estipulado podemos por exemplo desabilitar o botão, como no exemplo abaixo:

 

Dim retorno As Integer = 0

Try

  PictureBox1.Image = System.Drawing.Bitmap.FromFile(“a:\inverno.jpg”)

Catch

  retorno += 1

  If retorno <= 2 Then

  MsgBox(“Insira o disco no drive A”)

Else

  MsgBox(“Recurso não disponivel”)

  Button1.Enabled = False

End If

End Try

 


Confira todos os artigos de Certificações .NET:

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI