Sei sulla pagina 1di 24

Microsoft Visual Basic 2010

Tratamento de Excees

Objetivos
Excees. Tratamento de Excees Estruturadas. Tipos de Exceo. Bloco Try...End Try. A seo Catch. Blocos Try...End Try Aninhados. A seo Finally. Lanamento de Excees.

Exceo
Exceo um erro no fluxo normal de execuo do cdigo de um programa de uma aplicao. O.NET framework oferece uma forma unificada de identificar e tratar excees entre todas as linguagens de programao .NET (BALENA, 2006). H dois tipos de excees: excees de hardware e excees de software. As excees de hardware so causadas por erros do programa no que se refere a hardware como, por exemplo, violao de acesso a endereos de memria. Enquanto as excees de software so causadas por erros do programa no que se refere a software como, por exemplo, atribuir um valor incompatvel a uma varivel ou diviso por zero (MACKENZIE e SHARKEY, 2003).

Tratamento de Excees Estruturadas


O tratamento de excees estruturadas (Structured Exception Handling - SEH) uma estratgia para codificar o programa de uma aplicao para tratar tanto as excees de hardware quanto as excees de software. Dessa forma, o cdigo para tratamento de excees se torna unificado e mais consistente por tratar tanto as excees de hardware quanto as excees de software. Sees do cdigo que estiverem propensas a gerarem excees como, por exemplo, clculos, acesso a banco de dados, operaes com arquivos etc. (MACKENZIE e SHARKEY, 2003).

Tipos de Excees
Os tipos de excees derivam da classe System.Exception que definida no .NET framework. Os principais tipos de exceo so: ArgumentException; ArgumentNullException; ArgumentOutOfRangeException; IndexOutOfRangeException; NotImplementedException; OutOfMemoryException; OverflowException; FileNotFoundException.

O Bloco Try ... End Try


As palavras-chave Try... End Try delimitam o bloco de cdigos protegidos para tratar as excees que ocorrerem, onde Try delimita o incio do bloco e End Try delimita o final do bloco. A sintaxe :

A seo Catch
A palavra-chave Catch marca a seo do bloco que captura e trata as excees que podem eventualmente ocorrer. Em geral, usa-se uma seo Catch para capturar cada tipo de exceo e uma seo Catch, chamada genrica, no final para capturar todos os demais tipos de excees que no foram capturados pelas sees Catch anteriores. A sintaxe :

A seo Catch
O exemplo a seguir declara a varivel i do tipo Decimal e atribui o valor 10. Declara a varivel j do Decimal e atribui o valor zero. Define a diviso de i por j sem captura e tratamento de exceo, que ao ser executado abortado por gerar uma exceo de diviso por zero (DivideByZeroException).

A seo Catch
A imagem mostra a janela de exceo de diviso por zero sem tratamento, apresentada ao se executar o programa pelo IDE do Visual Basic 2010 Express.

A seo Catch
O exemplo a seguir foi modificado para realizar a captura e o tratamento da exceo genrica, ou seja, de qualquer tipo de exceo.

A seo Catch
A imagem mostra a mensagem exibida pela seo de tratamento de exceo genrica do programa.

A seo Catch
O exemplo a seguir foi modificado para na primeira seo Catch capturar etratar a exceo DivideByZeroException e na segunda seo Catch capturar e tratar uma exceo genrica, ou seja, qualquer tipo de exceo.

A seo Catch
Ao executar o programa, a primeira seo Catch captura a exceo DivideByZeroException e exibe a mensagem mostrada na imagem.

Blocos Try...End Try Aninhados


Os blocos Try...End Try podem ser aninhados. O exemplo a seguir define um bloco Try...End Try externo que contm um outro bloco Try...End Try interno. Se ocorrer uma exceo na abertura do arquivo, o programa exibe a mensagem "Exceo na abertura do arquivo.", e se aps a abertura do arquivo sem exceo ocorrer uma exceo na leitura do arquivo, o programa exibe a mensagem "Exceo na leitura do arquivo."

Blocos Try...End Try Aninhados

A seo Finally
A seo Finally define o cdigo que dever ser sempre executado, sem ou com a ocorrncia de uma exceo, antes de terminar o bloco Try...End Try. Em geral, contm o cdigo para liberar recursos alocados no bloco Try...End Try ou o cdigo comum a ser executado antes de terminar o bloco Try...End Try. O exemplo a seguir foi modificado para conter a seo Finally, que sempre emite um sinal sonoro (Beep()), antes de terminar o bloco Try...End Try.

A seo Finally

Lanamento de Excees
Em algumas situaes voc pode desejar lanar uma exceo para que esta seja tratada por uma rotina de tratamento de exceo ou para gerar uma exceo. A sintaxe da declarao do lanamento da exceo :
Throw [expresso]

O exemplo a seguir foi modificado para lanar uma exceo genrica com a mensagem "Divisor j igual a zero" se o valor da varivel j for igual a zero. Como a varivel j declarada e inicializada com valor igual a zero, o programa lana a exceo, que capturada pela seo Catch, a qual exibe a mensagem "Ocorreu uma exceo: Divisor j igual a zero.", conforme mostra a imagem.

Lanamento de Excees

Lanamento de Excees
Mensagem exibida com o lanamento da exceo genrica:

Microsoft Visual Basic 2010


Concluso

Saiba mais
Introduo ao Tratamento de Exceo:
http://msdn.microsoft.com/pt-br/library/c68xfk56.aspx.

Viso Geral sobre a Manipulao Estruturada de Excees para o Visual Basic:


http://msdn.microsoft.com/pt-br/library/8a9f2ew0.aspx

Classe Exception:
http://msdn.microsoft.com/pt-br/library/system.exception.aspx

Como Capturar uma exceo:


http://msdn.microsoft.com/pt-br/library/ys1b32h3.aspx

Declarao Try... Catch... Finally... End Try :


http://msdn.microsoft.com/pt-br/library/fk6t46tz.aspx

Viso Geral do Tratamento de Exceo No Estruturado


http://msdn.microsoft.com/pt-br/library/sf1hwa21.aspx

Saiba mais
Declarao On Error:
http://msdn.microsoft.com/pt-br/library/5hsw66as.aspx

Quando Usar Manipulao de Exceo Estruturada ou No Estruturada:


http://msdn.microsoft.com/pt-br/library/s74yzzb5.aspx

Como Lanar uma exceo:


http://msdn.microsoft.com/pt-br/library/z7w9ff54.aspx

Declarao Throw:
http://msdn.microsoft.com/pt-br/library/ty79csek.aspx

Referncias
Universidade Estcio de S Microsoft

http://msdn.microsoft.com/pt-br/library/vstudio/2x7h1hfk(v=vs.100).as

Potrebbero piacerti anche