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: PrincipalArtigosCertificacoes : Programandocsharp018
Quer receber novidades e e-books gratuitos?

Programando com C#

 

GERENCIANDO ERROS E EXCEÇÕES

 

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.Image.FromFile(@"a:\inverno.jpg");

}

catch

{

   MessageBox.Show("Insira o disquete no drive A");

   try

   {

   pictureBox1.Image = pictureBox1.Image = System.Drawing.Image.FromFile(@"a:\inverno.jpg");

   }

   catch

   {

    MessageBox.Show("Falha ao abrir o arquivo");

    button1.Enabled = false;

    }

}

 

A primeira mensagem de erro pede para o usuario inserir o disque e clicar em OK, se ele o fizer o programa tenta ler o arquivo, se não for possivel emite a mensagem de Falha e desabilita o Button1.

 

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

 

1 – No programa que criamos no tutorial anterior, modifique o código do evento do Button1 para o seguinte.

 

try

{

pictureBox1.Image = System.Drawing.Image.FromFile(@"a:\inverno.jpg");

}

catch

{

   MessageBox.Show("Insira o disquete no drive A");

   try

   {

   pictureBox1.Image = pictureBox1.Image = System.Drawing.Image.FromFile(@"a:\inverno.jpg");

   }

   catch

   {

    MessageBox.Show("Falha ao abrir o arquivo");

    button1.Enabled = false;

    }

}

 

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;

 

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"))

 {

pictureBox1.Image = System.Drawing.Image.FromFile(@"a:\inverno.jpg");

 }

 else

{

MessageBox.Show("Não é possivel abrir o arquivo no drive A");

}

 

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 aconteçe e consequentemente o erro de runtime, um bloco try...catch trata o erro, mas novamente o usuario clica no botão e o erro aconteçe denovo, é 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:

 

int retorno = 0;

try

{

pictureBox1.Image = System.Drawing.Image.FromFile(@"a:\inverno.jpg");

}

catch

{

      retorno += 1;

      if (retorno <= 2)

      {

         MessageBox.Show("Insira o disquete no drive A");

      }

      else

      {

         MessageBox.Show("Recurso não disponivel");

         button1.Enabled = false;

       }

 }

 

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-2025 ®

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