Tratamento de erros no VB.NET

O objetivo deste tutorial é mostrar como utilizar a nova estrutura de tratamento de erros presente no Visual Basic.NET. Para que você entenda o desenvolvimento é recomendado que tenha bons conhecimentos das versões anteriores do Visual Basic, pois nesse tutorial será explicado tudo o que mudou do VB 6 para o VB.NET ...

17/07/03h

Diminuir o tamanho das letras Aumentar o tamanho das letras
Microsoft .NET

O objetivo deste TM é mostrar como utilizar a nova estrutura de tratamento de erros presente no Visual Basic.NET. Para que você entenda o desenvolvimento é recomendado que tenha bons conhecimentos das versões anteriores do Visual Basic, pois nesse tutorial será explicado tudo o que mudou do VB 6 para o VB.NET.

Software utilizado :

- Microsoft Visual Studio.NET 2003 Enterprise Architect (também conhecido como "Everett" ou versão 7.1) - Beta Final

Requisitos do sistema: (Para instalação completa, que contém todas as linguagens e recursos)

- Processador Intel Pentium II /AMD K6-2 a partir de 450 Mhz (Pentium III/AMD Duron a partir de 600 Mhz recomendados)

- Memória RAM: 96 Mb para Windows 2000 Pro (Recomendado 128 Mb), 192 Mb para Windows 2000 Server (Recomendado 256 Mb), 96 Mb para Windows XP Home (Recomendado 160 Mb) e 192 Mb para Windows XP Pro/Windows Server 2003 (Recomendado 256 Mb)

- 4.1 GB no drive da instalação e 900 Mb no drive do sistema

- Sistema Operacional: Windows 2000*, Windows XP ou Windows Server 2003 (é possível executar aplicações desenvolvidas com o VS.NET no Windows 98/Me/NT 4 mas não é possível desenvolver as aplicações nesses sistemas)  * o Windows 2000 Datacenter Server não é suportado.     

- Drive de CD-ROM ou DVD-ROM

- Placa de vídeo e monitor que suporte resolução de 800x600 e 256 cores (Recomendado High Color 16-Bit)

- Mouse

O Tratamento de Erros

O tratamento de erros é uma das partes mais importantes de uma aplicação, através do qual o desenvolvedor captura e trata ocorrências inesperadas. No tratamento de erros visa-se sempre capturar e resolver o mair número de erros possíveis para que o usuário não tenha que lidar com situações desagradáveis. Existem dois tipos de erro:

- Erro de ambiente: também chamados de erros de sistemas, são aqueles causados por falhas externas à aplicação. São os mais difíceis de serem previstos mas nem por isso devem deixar de ser tratados. Ex: arquivo não existente, tentativa de gravação em arquivo somente-leitura, disquete ausente no drive etc;

- Erro de programação: erros geralmente previsíveis e que deveriam ser evitados com medidas preventivas e adoção de padrões. Esses erros são os maiores problemas para os desenvolvedores. Ex: erro de tipos de dados, falta de consistência de dados etc.

Uma boa aplicação deve conter um bom tratamento de erros, resolvendo todos os possíveis erros de sistema e possuindo as consistências e cuidados necessários que evitem erros de programação. O ideal é que sejam corrigidos tantos erros quanto for possível, de preferência sem a intervenção do usuário, e registrar os outros, além de informar o usuário com mensagens amigáveis.

As versões anteriores do Visual Basic utilizavam a expressão "On Error GoTo" para tratar os erros - mas sabemos que esta estrutura não é o ideal pois na verdade trata-se de um desvio de código que chama um label para tratar os erros, sendo necessário utilizar a expessão "Exit Sub" para sair do procedimento antes de chegar ao tratamento pois se não fosse utilizada o programa entraria no tratamento de erro mesmo se não houvesse erro algum.

Os programadores Delphi conhecem muito bem o Tratamento de Erros Estruturado, utilizando o Try/Except. Esse tipo de tratamento de erros é, com certeza, muito melhor, pois torna o código muito mais limpo e de fácil entendimento, além de ser uma estrutura específica para tratar erros e não um desvio de execução. No Visual Basic.NET foi implantada a estrutura Try/Catch/Finally. Para usar essa estrutura você deve colocar todo o código que puder causar um erro dentro do bloco Try, definir possíveis erros através do Catch e colocar dentro do Finally códigos que sejam executados havendo ou não um erro. Veja este exemplo teórico:

  Try
    operação que pode gerar um erro
  Catch objErro As TipoErro When CondicaoOpcional
    tratamento do erro
  Finally
    código executado com ou sem erro

Durante o tutorial você compreenderá melhor o uso da estrutura, que é muito simples e muito útil, apresentando diversas vantagens sobre o método usado em outras versões, tais como: portabilidade entre as linguagens .NET, melhor performance e estabilidade. Durante o exemplo prático comentarei um pouco mais sobre a sintaxe da estrutura e como deve ser feito seu uso.

Para começar o tutorial, abra o Visual Studio.NET e crie uma nova aplicação selecionando "Visual Basic Applications" em Project Type e "Windows Application" em Templates:


New Project - TrataErro

Clique em OK. Será criado o form padrão. Em nosso tutorial criaremos uma aplicação que irá ler um arquivo texto e apresentar seu conteúdo ao usuário. Para isso coloque no form um componente TextBox (chamado "txtTexto") e um Button (chamado "btnMostra"). Mude a propriedade Multiline do TextBox para True e a propriedade ScrollBars para Both. Veja como ficará o form:


Layout do form

Vamos dar funcionalidade ao programa: adicione a seguinte linha acima de qualquer outra, no topo do editor de código:

  Imports System.IO

Agora clique duas vezes no botão btnMostra para abrir o código para o evento btnMostra_Click e digite o seguinte código:

Try
   Dim objLer As New StreamReader("C:\arquivo.txt")
   txtTexto.Text = objLer.ReadToEnd() 'Lê arquivo até o fim
   objLer.Close()
Catch ex As FileNotFoundException
   MessageBox.Show("Arquivo não encontrado!", "Ler", _
    MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As DirectoryNotFoundException
   MessageBox.Show("Diretório não encontrado!", "Ler", _
    MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
   MessageBox.Show(ex.Message, "Ler", _
    MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

Para que não fiquem dúvidas, veja abaixo a janela de código:


Código do clique no botão

Vamos agora verificar a sintaxe: dentro do Try tentaremos abrir um arquivo texto e colocar todo o seu conteúdo dentro do Textbox. Se houver algum erro, entraremos nas cláusulas Catch e ali especificamos o tipo do erro (consulte o help do VS.NET ou o MSDN para saber todos os tipos existentes no .NET Framework) a ser capturado. Note que você deve colocar os mais genéricos por último pois se estiverem antes dos mais específicos serão capturados antes e os demais não serão levados em consideração.

O tipo de erro mais genérico é o System.Exception e por isso ele sempre deve estar na última cláusula Catch. Se você invertesse a ordem das cláusulas Catch neste exemplo o programa entraria no primeiro, onde o erro está sendo capturado como genérico, e as outras cláusulas Catch nem seriam consultadas. A propriedade "Message" do objeto de erro (ao qual você pode dar qualquer nome, no nosso caso chamasse "ex") mostra a mensagem de eero retornada pelo sistema.

Vejamos a execução do programa (note que o arquivo não deve existir em seu HD):


Form ao ser executado, em estado normal



Mensagem exibida após clique no botão

Agora mude o caminho do arquivo no seu código, apontando para um diretório inexistente. (antigo "C:\arquivo.txt", mude para "C:\aabb\arquivo.txt"). O resultado será o seguinte:


Mensagem exibida após clique no botão

Altere novamente o caminho para "C:\arquivo.txt" e crie esse arquivo no seu HD, colocando qualquer conteúdo. Execute o form e clique no botão Mostrar:


Quando o arquivo existe a leitura é feita com sucesso

Note que não utilizamos a cláusula Finally pois realmente não era necessário: ela é utilizada quando precisamos fechar ou abrir uma conexão com banco de dados ou finalizar um objeto qualquer. Lembre-se de que tudo o que estiver dentro da cláusula Finally será executado, havendo ou não erros.

Conclusão

A nova estrutura para tratamento de erros do VB.NET é, sem dúvida alguma, um dos melhores melhoramentos da linguagem pois provê mais praticidade, desempenho e facilidade de uso do que os códigos utilizados nas versões anteriores - além de ser de uso mais fácil e intuitivo e melhorar a leitura do código.

Marcas Registradas
Visual Basic, Visual Basic.NET, Visual Studio.NET, Windows são marcas registradas da Microsoft Corporation.
Todos os demais nomes registrados, marcas registradas ou direitos de uso citados neste TM pertencem a seus respectivos proprietários.

 

Autor original:  ClawHammer
Direitos Autorais:  BABOO




imprima este artigo
envie este artigo via e-mail

 

Artigos relacionados


Mais Notícias desta Área

Últimas Notícias
 
 Software  |  Hardware  |  Segurança  |  Tecnologia  |  Tutoriais  |  Download  |  Web  | Desenvolvimento  |  Fórum 
 Mundo Corporativo  |  Carreira  |  Mercado  |  Telecom  |  Servidores  |  Tecnologia 
    BABOO é um site brasileiro de TI focado em informática, tecnologia, software,hardware, tutoriais e downloads, e soluções de dúvidas através do nosso fórum.

 

Artigos do BABOO