Olá amigos leitores! Esse é o último artigo e vou encerrar o assunto sobre "Tratamento de Exceções". Caso você não tenha lido os artigos anteriores peço que não continue esse artigo sem ler. Exceto se estiver bem inteirado sobre Tratamento de Exceções.
Se preferir, clique
aqui para ver o primeiro artigo e clique
aqui para ver o segundo sobre Tratamento
de Exceções.
Nesse artigo apenas vou adicionar um complemento referente aos artigos anteriores,
mostrando outros exemplos.
O Download do Aplicativo de Testes com os fontes mostrados neste e no artigo
anterior poderão ser baixados pelo link no final do artigo.
Observação: Dessa vez não entrarei em detalhes de exceções
como por exemplo: exceções da RTL (Run Time Libray) ou da VCL
(Visual Component Library), mesmo porque o Delphi está sendo atualizado
constantemente, sendo assim, teria que especificar quais exceções
pertencem a qual versão e etc.
Exceções Silenciosas
Com o comando Abort é possível gerar Exceções
Silenciosas, ou seja, que não exibem mensagem alguma, por exemplo:

Figura 1 - Exceção Silenciosa - Abort
Uma das principais vantagens de se utilizar o Abort é que, como ele gera uma
Exceção propriamente dita, a execução do código pára quando ele é chamado,
ou seja, se temos uma procedure que chama outra procedure e nesta última
colocamos o comando exit;, a segunda procedure será encerrada neste
ponto, porém, ao retornar à primeira, o código continua sendo executado. Se
no lugar
no exit colocarmos um abort;, todo a execução é interrompida, fazendo
com que o programa pare sem sequer retornar à primeira procedure.
Manipulando Exceções em TApplication
Quando ocorre uma exceção e essa não é tratada
usando Try, Except e Finally, será passada ao manipulador de exceções
do objeto Application, mais exatamente no Evento OnException. Até o
Delphi 4, os usuários precisavam criar métodos para utilizar
no evento OnException do objeto Application. A partir do Delphi 5, podemos
codificar o Evento OnException do Objeto ApplicationEvents da paleta Additional.
Ele
pode ser utilizado para manipular as exceções do sitema! Veja
um exemplo de como criar exceções personalizadas usando ApplicationEvents:

Figura 2 - Componente
ApplicationEvents da paleta Additional, nas Versões anteriores e recentes do
Delphi
Passo-a-Passo
Abra uma nova aplicação e nela insira um botão (TButton da Paleta Standard) e um Application Events (TApplicationEvents da Additional).
Pressione F12 e vá até a seção type e insira a linha EMinhaExcecao
= class (Exception);, conforme a figura a seguir.
Figura 3 - Criando um tipo personalizado de exceção
Após isso, selecione o componente ApplicationEvents que foi adicionado
ao form, dê um duplo clique no evento
OnException e cole o código abaixo:
if (E is EMinhaExcecao) then
Application.MessageBox('Minha Exceção está personalizada',
'Tratamento de Exceções', MB_OK + MB_ICONINFORMATION + MB_DEFBUTTON2);
Esse código nada mais é do que minha exceção personalizada
da forma como quero exibir quando acontecer este tipo de exceção,
o EMinhaExcecao. É claro
que nesse caso nós provocaremos essa exceção, porque senão
ela nunca acontecerá por si só. Para isso, no evento OnClick
do botão
faça:
raise EMinhaExcecao.Create(EmptyStr);
Assim estaremos provocando a exceção quando o botão for
clicado e a seguinte mensagem vai aparecer:

Figura 4 - Mensagem Personalizada para o Tipo de Exceção Criado
Usando o recurso acima é possível tratar as exceções
de forma global, personalizando todas as possíveis exceções
de seu projeto.
Quero aproveitar para pedir desculpas a Marku
Vinicius Da Silva, referente
a exceções específicas do ADO. Eu não consegui
encontrar nenhum material sobre exceções desses
componentes. Mas como já nos falamos anteriormente, você pode
usar E: Exception para qualquer tipo de exceção que
ocorra, claro que isso pode não ser totalmente eficaz, mas ajudará.
Se alguém tiver um material diferente do que foi apresentado aqui sobre
exceções, mande para mim por e-mail.
Clique aqui para baixar os exemplos
com fontes.
João Marcos
Contato:
jsakalauska@gmail.com
|