tratamento de exceções
TRANSCRIPT
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
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
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
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
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
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
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