tratamento de exceções

7
Home Sobre Início Blogs Recomendados Projeto TBitCalculaImposto (Classe em Delphi para cálculo de Impostos) Aplicativos Portable Cursos Desenvolvimento de Software Análise de Sistemas / Orientações ASP.NET C# Tutoriais Banco de Dados Firebird Boas práticas Delphi Artigos Componentes Delphi DataSnap Dicas Erros e Soluções Funções OO – Orientação a Objetos Engenharia de Software Gerenciamento de Projetos Java PHP Dicas ECF – PAF_ECF Extra TI Imagens Rede Artigos Segurança Sem categoria tutoriais diversos Uncategorized Utilidades Wallpapers Web Hospedagem de sites Joomla WordPress Temas Windows Resumo TI – Tecnologia da Informação Os mais diversos assuntos sobre Tecnologia da Informação Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413 1 de 7 28/09/2013 14:35

Upload: francisco-barbosa

Post on 02-Jan-2016

266 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: tratamento de exceções

HomeSobreInícioBlogs RecomendadosProjeto TBitCalculaImposto (Classe em Delphi para cálculo de Impostos)

AplicativosPortable

CursosDesenvolvimento de Software

Análise de Sistemas / OrientaçõesASP.NET

C#Tutoriais

Banco de DadosFirebird

Boas práticasDelphi

ArtigosComponentes DelphiDataSnapDicasErros e SoluçõesFunçõesOO – Orientação a Objetos

Engenharia de SoftwareGerenciamento de Projetos

JavaPHP

DicasECF – PAF_ECFExtra TIImagensRede

ArtigosSegurançaSem categoriatutoriais diversosUncategorizedUtilidadesWallpapersWeb

Hospedagem de sitesJoomlaWordPress

TemasWindows

Resumo TI – Tecnologia da InformaçãoOs mais diversos assuntos sobre Tecnologia da Informação

Tratamento de exceções com Delphi (Try, Except, Finally, Raise,

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

1 de 7 28/09/2013 14:35

Page 2: tratamento de exceções

Tweetar 0

Curtir 3

Exception e ApplicationEvents)

Nesse artigo, explicarei como funciona o mecanismo de tratamento de exceções no Delphi,antes de mais nada, é preciso saber as razões pela qual se faz necessário a utilização dessatécnica, são elas:

Razões na forma conceitual

Detectar erros imprevisíveis na sua aplicações. (99,9% dos casos acontecem)Criar regras ou comportamentos que deseje que o programa realize em caso de falhas na execução dedeterminados trechos de códigos.Gerar suas próprias exceções para realizar a validação de dados entrados pelo usuárioAssegurar a execução de determinados códigos independentemente de erros que possam vir à acontecer.

Razões na prática

Se acontecer algum erro na minha aplicação que eu não programei nada, faça…Se acontecer algum erro ao tentar gravar tal informação, mostra para o usuário a mensagem de erro para queeu possa identificar melhor.Se o usuário não preencher o código do produto, então informe a esse usuário em formato de exceção que énecessário preencher, ora essa!Olha, se depois que eu criar tal objeto e no meio do código acontecer algum erro ou não, libere tal objeto damemória.

Acredito que agora já da pra ter um entendimento melhor da necessidade do tratamento de exceções.

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; //Divisão por Zero gerará uma exceção except showmessage('Houve um erro ao tentar divid ir x por y, pois y=0'); end;

end;

Comando Try, Finally

O conjunto Try Finally é utilizado para garantir que independente que aconteça erros em um determinado trecho decódigo, 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; // Divisão por Zero gerará uma ex ceção finally

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

2 de 7 28/09/2013 14:35

Page 3: tratamento de exceções

showmessage('Essa mensagem sempre será mostrad a, acontecendo erro ou não dentro do Try'); end;

end;

Comando Raise

Através do raise, é possível o programador criar sua própria exceção e por sua vez, capturar com o try except, comomencionado acima.

Exemplo

procedure TForm1.Button4Click(Sender: TObject);begin

try if Edit1.Text = '' then raise Exception.Create('Gerei uma exceção, di gite alguma texto no edit1!!!');

except showmessage ('Essa mensagem só vai aparecer caso o Edit1. Text não tenha nada digitado, pois ' + 'o comando Raise criará uma exceção 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 técnica esim mensagem que simplesmente programamos. Através do Try, Except e da classe Exception, podemos “pegar” amensagem técnica.

Exemplo:

procedure TForm1.Button3Click(Sender: TObject);var x, y, i: integer;begin

x := 100; y := 0;

try x := x div y; // Divisão por Zero gerará uma exceção 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 imprevisíveis na aplicação

Agora vamos ver como detectar de forma global as exceções geradas pela aplicação. Existem duas formas nativaspara realizar isso no Delphi.

1) Utilizando a classe ApplicationEvents.

O ApplicationEvents tem várias utilidades, como o próprio nome já diz, ele consegue capturar diversos eventosocorridos na aplicação, dentre os quais, o Exception.

Coloque um componente desse no form principal, em eventos, clique no evento OnException.Como parâmetro, temos o Sender: TObject e E: Exception.coloque o seguinte código Showmessage(‘Houve um erro na aplicação, a mensagem é : ‘+E.Message);

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

3 de 7 28/09/2013 14:35

Page 4: tratamento de exceções

Esse evento será disparado, caso aconteça algum erro na aplicação onde você não tenha programado nada para otratamente da exceção, ou seja, capturando erros imprevisíveis.

2) Utilizando uma procedure que tratará todas as exceções.

Você pode utilizar uma procedure para fazer o mesmo trabalho que o ApplicationEvents faz. Crie uma procedurecomo abaixo :

procedure TForm1.TrataExcecao(Sender:TObject; E: Ex ception);begin ShowMessage(E.Message);end;

E no evento OnCreate do Form, coloque Application.OnException := TrataExcecao;

Se executássemos por exemplo o código

procedure TForm1.Button5Click(Sender: TObject);var x, y, i: integer;begin

x := 100; y := 0; x := x div y; // Divisão por Zero gerará uma exce ção

end;

O Delphi chamaria a procedure TrataExcecao, pois acima foi gerado um erro e o mesmo não foi tratado, foi“imprevisível”.

Bem, nesse artigo mostrei de forma resumida e direta praticamente tudo o que é necessário saber para trabalhar comexceções em Delphi, seja em um ambiente avançado ou básico, sempre será utilizado esses comandos para otratamente de exceções, cabendo ao programador, a habilidade necessária para aplicar eficientemente essas técnicas.

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

Tratamento profissional deexceções em Delphi comEurekaLog (Adeus Bug,Access Violation e ...

Não foi possivel localizar onumero ordinal 4046 nabiblioteca de vinculodinamico LIBEAY32.dll ...

TMS Component Pack 5.8Delphi 7 – Delphi XE

ForceDirectories – CriarDiretório + Subdiretório deuma vez no Delphi.

Veja também...

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

4 de 7 28/09/2013 14:35

Page 5: tratamento de exceções

Tweetar 0

Curtir 3

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 comentário.

Login

Colorindo células e linha doCxGrid

Database Comparer VCLFull ver 3.2.47.10

TGetDiskSerial VCL v2.7.1Delphi 2010 – Serial Físicodo HD

Mostrar janelas estilo MSNno Delphi com oJvDesktopAlert

ImpressoraSamsung LaserMultifuncionalMonocromáticaSCX-3405KaBuM!

15% deDesconto noBoleto

Tratamento profissional deexceções em Delphi comEurekaLog (Adeus Bug,Access Violation e ...

Não foi possivel localizar onumero ordinal 4046 nabiblioteca de vinculodinamico LIBEAY32.dll ...

TMS Component Pack 5.8Delphi 7 – Delphi XE

ForceDirectories – CriarDiretório + Subdiretório deuma vez no Delphi.

Colorindo células e linha doCxGrid

Database Comparer VCLFull ver 3.2.47.10

TGetDiskSerial VCL v2.7.1Delphi 2010 – Serial Físicodo HD

Mostrar janelas estilo MSNno Delphi com oJvDesktopAlert

Veja também...

Nome de usuário

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

5 de 7 28/09/2013 14:35

Page 6: tratamento de exceções

Categorias

Aplicativos (3)Portable (1)

Cursos (2)Desenvolvimento de Software (48)

Análise de Sistemas / Orientações (2)ASP.NET (3)

C# (1)Tutoriais (2)

Banco de Dados (5)Firebird (2)

Boas práticas (2)Delphi (39)

Artigos (16)Componentes Delphi (2)DataSnap (2)Dicas (11)Erros e Soluções (4)Funções (11)OO – Orientação 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)Segurança (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 cálculo de Impostos)Nota Fiscal Fácil – Cálculos de Notas Fiscais

Senha

LembrarPerdeu a senha?Registrar-se

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

6 de 7 28/09/2013 14:35

Page 7: tratamento de exceções

Posts Recentes

Mensagem de Erro (Maven / Eclipse) : java.util.concurrent.TimeoutException: No response receivedafter 60000Como apagar fila de impressão no Windowsdocument.write(unescape('

Tratamento de exceções com Delphi (Try, Except, Finally, Raise, Excep... http://www.resumoti.com.br/?p=413

7 de 7 28/09/2013 14:35