teckV Posted April 11, 2006 at 11:52 AM Report #21657 Posted April 11, 2006 at 11:52 AM um dos maiores avanços do VB.NET foi a inclusão de uma estrutura de gestão de erros tipo TRY...CATCH... se não criarem nenhuma estrutura de gestão de erros acontece o pior.. se acontecer um erro o utilizador final (quem vai executar os vossos programas) vai ver umas mensagens de debug estranhissimas (no ASP.NET pode não ver consoante configuração) e o programa rebenta (deixa de funccionar e o utilizador têm de o fechar e inicar de novo)... dá muito mau aspecto e é má conduta de desenvolvimento para evitar isso usa-se a gestão de erros... com o .NET o VB passou a ter uma estrutura de gestão de erros ao nivel das mais poderosas linguagens com a funcionalidade TRY...CATCH Bloco Try Ainda no bloco Try podemos utilizar blocos Try...Catch aninhados, ou seja, se a exceção não for manipulada por pelo bloco aninhado ela é entregue ao bloco Try externo, em que ela terá mais uma chance de ser tratada. Podemos também utilizar o Exit Try para sairmos do bloco Try. Bloco Catch Podemos utilizar a técnica de aninhamento no bloco Catch também, ou seja, você pode ter por exemplo cinco manipuladores de exceções, uma para cada exceção específica. Temos também Throw que serve para você lançar suas próprias exceções ou até mesmo lançar a exceção ocorrida para que ela seja tratada. Veremos mais abaixo um exemplo de como utilizá-lo. OBS.: Devemos sempre escrever os manipuladores de exceções do mais específico ao mais genérico, pois se fizermos ao contrário, ele sempre manipulará o erro com o manipulador genérico de exceção. Bloco Finally O bloco Finally contém código de limpeza/encerramento, como por exemplo, fechar conexões com Banco de Dados, liberar objetos, etc. Lembrando que o bloco Finally é executado independentemente se houve ou não uma exceção. Para finalizar sobre o Try...Catch...Finally devemos levar em consideração que se tratam de blocos de código, logo se declararmos uma variável dentro do bloco Try ela será vista apenas dentro ele, os blocos Catch e Finally não poderão manipular tais variáveis, acusando que a mesma não foi declarada. Para contornar isso, declare as variáveis que deseja utilizar antes do bloco Try...Catch...Finally. ex: Sub DoSomething() Try 'inicio da estrutura de captura de erros 'código para fazer o que pretendem Catch e as Exception 'caso aconteça um erro o fluxo do código vêm para aqui e podem fazer alguma acção para cuidar dele. 'Podem criar codigo para dar a volta ao erro ou podem criar mensagens de aviso de erro personalizadas Response.Write ("Ocorreu o erro: " & e.toString()) Finally 'o bloco Finally é executado independentemente se houve ou não uma exceção End Try End Sub o codigo passa a ficar dentro desta estrutura e captura erros eviando-os para o CATCH Primeiro incluem o vosso código (as partes em que querem capturar eventuais erros) dentro de uma estrutura Try... Catch...Finaly Iniciam a estrutura com TRY... segue-se o código e no fim criam um bloco Catch que o que faz é que recebe o fluxo do código caso se encontre um erro.. o CATCH pode ser feito de diversas formas: Podem utilizar a clausula When para criar uma condição tipo ... quando o erro for este faz When Catch When Err.Number = 5 lblWebConfig.Text = "Servidor já introduzido!" CATCH genérico: 'recebe o fluxo do codigo qualquer que seja o erro e emite uma excepção genérica Catch Ex As Exception deb.WriteLine("erro = " & Ex.Message) lblWebConfig.Text = "Ocorreu um erro na introdução dos dados!! Verifique os dados a introduzir" ou podem capturar excepções especificas como as execpções do SQL SqlException Catch SQLExp As SqlException Dim errNum As Int16 = SQLExp.Number deb.WriteLine("deu-se o erro numero = " & errNum) topicos na web sobre este tema em PT.br http://www.linhadecodigo.com.br/artigos.asp?id_ac=166&pag=1 http://www.linhadecodigo.com.br/artigos.asp?id_ac=170 http://www.c-sharpcorner.com/vbnet/vbarticles/VBASPExHSSK.asp
vbmaster Posted April 11, 2006 at 01:00 PM Report #21663 Posted April 11, 2006 at 01:00 PM Uma das coisas muito bem alteradas aquando do upgrade para vb.net.... em vb6 aquilo era uma rebaldaria em error Handling. Bom tut.
Delta Posted April 11, 2006 at 01:37 PM Report #21674 Posted April 11, 2006 at 01:37 PM lol ainda mantenho esses maus hábitos.... on error resume next on error goto bla....bla.... só em alguns casos.....lol 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now