Você está na página 1de 7

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Home Sobre Incio Blogs Recomendados Projeto TBitCalculaImposto (Classe em Delphi para clculo de Impostos)

Aplicativos Portable Cursos Desenvolvimento de Software Anlise de Sistemas / Orientaes ASP.NET C# Tutoriais Banco de Dados Firebird Boas prticas Delphi Artigos Componentes Delphi DataSnap Dicas Erros e Solues Funes OO Orientao a Objetos Engenharia de Software Gerenciamento de Projetos Java PHP Dicas ECF PAF_ECF Extra TI Imagens Rede Artigos Segurana Sem categoria tutoriais diversos Uncategorized Utilidades Wallpapers Web Hospedagem de sites Joomla WordPress Temas Windows

Resumo TI Tecnologia da Informao Os mais diversos assuntos sobre Tecnologia da Informao

Tratamento de excees com Delphi (Try, Except, Finally, Raise,

1 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Exception e ApplicationEvents)
Nesse artigo, explicarei como funciona o mecanismo de tratamento de excees no Delphi, antes de mais nada, preciso saber as razes pela qual se faz necessrio a utilizao dessa tcnica, so elas: Razes na forma conceitual Detectar erros imprevisveis na sua aplicaes. (99,9% dos casos acontecem) Criar regras ou comportamentos que deseje que o programa realize em caso de falhas na execuo de determinados trechos de cdigos. Gerar suas prprias excees para realizar a validao de dados entrados pelo usurio Assegurar a execuo de determinados cdigos independentemente de erros que possam vir acontecer. Razes na prtica Se acontecer algum erro na minha aplicao que eu no programei nada, faa Se acontecer algum erro ao tentar gravar tal informao, mostra para o usurio a mensagem de erro para que eu possa identificar melhor. Se o usurio no preencher o cdigo do produto, ento informe a esse usurio em formato de exceo que necessrio preencher, ora essa! Olha, se depois que eu criar tal objeto e no meio do cdigo acontecer algum erro ou no, libere tal objeto da memria. Acredito que agora j da pra ter um entendimento melhor da necessidade do tratamento de excees. Comando Try, Except O Conjunto de Try e Except, quer dizer, quando estiver dentro do Try e acontecer algum erro, mostre o que est dentro do Except Exemplo
procedure TForm1.Button1Click(Sender: TObject); var x,y,i:integer; begin x :=100; y := 0; try x:= x div y; //Diviso por Zero gerar uma exceo except showmessage('Houve um erro ao tentar dividir x por y, pois y=0'); end; end;
Tweetar Curtir 3 0

Comando Try, Finally O conjunto Try Finally utilizado para garantir que independente que acontea erros em um determinado trecho de cdigo, o que estiver dentro do Finally ser executado. Exemplo
procedure TForm1.Button2Click(Sender: TObject); var x, y, i: integer; begin x := 100; y := 0; try x := x div y; // Diviso por Zero gerar uma exceo finally

2 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

showmessage('Essa mensagem sempre ser mostrada, acontecendo erro ou no dentro do Try'); end; end;

Comando Raise Atravs do raise, possvel o programador criar sua prpria exceo e por sua vez, capturar com o try except, como mencionado acima. Exemplo
procedure TForm1.Button4Click(Sender: TObject); begin try if Edit1.Text = '' then raise Exception.Create('Gerei uma exceo, digite alguma texto no edit1!!!'); except showmessage ('Essa mensagem s vai aparecer caso o Edit1.Text no tenha nada digitado, pois ' + 'o comando Raise criar uma exceo que voc programou!'); end; end;

O comando Try, Except e Exception At agora, dentre os comando que vimos, nenhum mostrou o erro que realmente aconteceu, a mensagem tcnica e sim mensagem que simplesmente programamos. Atravs do Try, Except e da classe Exception, podemos pegar a mensagem tcnica. Exemplo:
procedure TForm1.Button3Click(Sender: TObject); var x, y, i: integer; begin x := 100; y := 0; try x := x div y; // Diviso por Zero gerar uma exceo except on E: Exception do showmessage ('Aconteceu um erro e a mensagem de erro : '+E.Message ); end; end;

No exemplo acima, a mensagem ser Aconteceu um erro e a mensagem de erro : Division by Zero.

Detectando erros imprevisveis na aplicao Agora vamos ver como detectar de forma global as excees geradas pela aplicao. Existem duas formas nativas para realizar isso no Delphi. 1) Utilizando a classe ApplicationEvents. O ApplicationEvents tem vrias utilidades, como o prprio nome j diz, ele consegue capturar diversos eventos ocorridos na aplicao, dentre os quais, o Exception. Coloque um componente desse no form principal, em eventos, clique no evento OnException. Como parmetro, temos o Sender: TObject e E: Exception. coloque o seguinte cdigo Showmessage(Houve um erro na aplicao, a mensagem : +E.Message);

3 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Esse evento ser disparado, caso acontea algum erro na aplicao onde voc no tenha programado nada para o tratamente da exceo, ou seja, capturando erros imprevisveis.

2) Utilizando uma procedure que tratar todas as excees. Voc pode utilizar uma procedure para fazer o mesmo trabalho que o ApplicationEvents faz. Crie uma procedure como abaixo :
procedure TForm1.TrataExcecao(Sender:TObject; E: Exception); begin ShowMessage(E.Message); end;

E no evento OnCreate do Form, coloque Application.OnException := TrataExcecao; Se executssemos por exemplo o cdigo
procedure TForm1.Button5Click(Sender: TObject); var x, y, i: integer; begin x := 100; y := 0; x := x div y; // Diviso por Zero gerar uma exceo end;

O Delphi chamaria a procedure TrataExcecao, pois acima foi gerado um erro e o mesmo no foi tratado, foi imprevisvel.

Bem, nesse artigo mostrei de forma resumida e direta praticamente tudo o que necessrio saber para trabalhar com excees em Delphi, seja em um ambiente avanado ou bsico, sempre ser utilizado esses comandos para o tratamente de excees, cabendo ao programador, a habilidade necessria para aplicar eficientemente essas tcnicas.

Download do exemplo : http://uploading.com/files/a3879cc7/Exce%25C3%25A7%25C3%25B5es.rar/

Veja tambm...

Tratamento profissional de excees em Delphi com EurekaLog (Adeus Bug, Access Violation e ...

No foi possivel localizar o numero ordinal 4046 na biblioteca de vinculo dinamico LIBEAY32.dll ...

TMS Component Pack 5.8 Delphi 7 Delphi XE

ForceDirectories Criar Diretrio + Subdiretrio de uma vez no Delphi.

4 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Colorindo clulas e linha do Database Comparer VCL CxGrid Full ver 3.2.47.10

TGetDiskSerial VCL v2.7.1 Delphi 2010 Serial Fsico do HD

Mostrar janelas estilo MSN no Delphi com o JvDesktopAlert Tweetar Curtir 3 0

Impressora Samsung Laser Multifuncional Monocromtica SCX-3405


KaBuM!

15% de Desconto no Boleto

Veja tambm...

Tratamento profissional de excees em Delphi com EurekaLog (Adeus Bug, Access Violation e ...

No foi possivel localizar o numero ordinal 4046 na biblioteca de vinculo dinamico LIBEAY32.dll ...

TMS Component Pack 5.8 Delphi 7 Delphi XE

ForceDirectories Criar Diretrio + Subdiretrio de uma vez no Delphi.

Colorindo clulas e linha do Database Comparer VCL CxGrid Full ver 3.2.47.10

TGetDiskSerial VCL v2.7.1 Delphi 2010 Serial Fsico do HD

Mostrar janelas estilo MSN no Delphi com o JvDesktopAlert

Seja o primeiro a comentar - O que voc achou? Categories: Artigos, Delphi Tags: artigos delphi

Deixe uma resposta


Voc precisa fazer o login para publicar um comentrio. Login Nome de usurio

5 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Senha Lembrar Perdeu a senha? Registrar-se Categorias Aplicativos (3) Portable (1) Cursos (2) Desenvolvimento de Software (48) Anlise de Sistemas / Orientaes (2) ASP.NET (3) C# (1) Tutoriais (2) Banco de Dados (5) Firebird (2) Boas prticas (2) Delphi (39) Artigos (16) Componentes Delphi (2) DataSnap (2) Dicas (11) Erros e Solues (4) Funes (11) OO Orientao a Objetos (2) Engenharia de Software (2) Gerenciamento de Projetos (2) Java (1) PHP (2) Dicas (2) ECF PAF_ECF (2) Extra TI (3) Imagens (2) Rede (3) Artigos (2) Segurana (1) Sem categoria (1) tutoriais diversos (6) Uncategorized (1) Utilidades (1) Wallpapers (1) Web (6) Hospedagem de sites (3) Joomla (1) WordPress (1) Temas (1) Windows (2) Blogs Recomendados Projeto TBitCalculaImposto (Classe em Delphi para clculo de Impostos) Nota Fiscal Fcil Clculos de Notas Fiscais

6 de 7

28/09/2013 14:35

Tratamento de excees com Delphi (Try, Except, Finally, Raise, Excep...

http://www.resumoti.com.br/?p=413

Posts Recentes Mensagem de Erro (Maven / Eclipse) : java.util.concurrent.TimeoutException: No response received after 60000 Como apagar fila de impresso no Windowsdocument.write(unescape('

7 de 7

28/09/2013 14:35

Você também pode gostar