Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Tratamento de exceções


☢|EXPL01T3R|☣
 Compartilhar

Posts Recomendados

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 dessa té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 de determinados trechos de códigos.
  • Gerar suas próprias exceções para realizar a validação de dados entrados pelo usuário
  • Assegurar 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 que eu 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 da memó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

É necessário se cadastrar para acessar o conteúdo.

 

 

Comando Try, Finally

O conjunto Try Finally é utilizado para garantir que independente que aconteça erros em um determinado trecho de código, o que estiver dentro do Finally será executado.

Exemplo

É necessário se cadastrar para acessar o conteúdo.

 

 

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, como mencionado acima.

Exemplo

É necessário se cadastrar para acessar o conteúdo.

 

 

O comando Try, Except e Exception

Até agora, dentre os comando que vimos, nenhum mostrou o erro que realmente aconteceu, a mensagem técnica e sim mensagem que simplesmente programamos. Através do Try, Except e da classe Exception, podemos “pegar” a mensagem técnica.

Exemplo:

É necessário se cadastrar para acessar o conteúdo.

 

 

 

 

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 nativas para 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 eventos ocorridos 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);

Esse evento será disparado, caso aconteça algum erro na aplicação onde você não tenha programado nada para o tratamente 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 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 executássemos por exemplo o código

É necessário se cadastrar para acessar o conteúdo.

 

 

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 com exceções em Delphi, seja em um ambiente avançado ou básico, sempre será utilizado esses comandos para o tratamente de exceções, cabendo ao programador, a habilidade necessária para aplicar eficientemente essas técnicas.

 

 

Fonte:
resumoti

 

Resolvi postar um exemplo completo do try depois de tentar ajudar um membro que esta com problema no hack... era um code tipo isso

É necessário se cadastrar para acessar o conteúdo.

o problema era justamente que a msg apareceria mesmo quando dava algum erro e o one hit não era ativado.. ou seja dava erro 809880234 sei la oque e a msg...

 

então apenas substitui esta parte por

É necessário se cadastrar para acessar o conteúdo.

 

oque ja serve como um exemplo mais prático

 

Essa funcionalidade seria algo pra ter mais cuidados com o programa e não uma coisa pra você obrigatoriamente usar.. Mais acho que 90% de quem ja programou e disponibilizou seu programa sabe que tem um monte de usuário chato que vem te encher o saco, que ja entra em pânico e tals.. por conta de um erro simples que no final nem vai afetar o funcionamento do programa então esta ai uma forma de filtrar isto... Um outro jeito tbm seria utilizar recursos como o eurekalog pra erros tipo Access Violation e tals.. seria uma forma mais profissional

python-doc-icon.jpg

wVNulLU.gif

Link para o comentário
Compartilhar em outros sites

Isto apenas solucionará pequenas exceções (óbvias), outras a solução será depurar a aplicação e achar onde encontra-se o erro.

 

no caso do application events, iria filtrar quase que todos os erros do programa até os não óbvios.. pode acontecer de não filtrar erros de tipo acess violation e tals.. oque ja teria que ser algo mais específico.. Mais erros de um modo geral que poderiam surgir por mal uso do usuário tipo um programa simples 2 edit e um botão pra somar o valor dos dois edits.. um erro por mal uso seria vc não por valor algum no edit qndo vc somar vai dar erro.. dentre as milhares de formas q tem de vc filtrar isso vc poderia uma dessas formas..

python-doc-icon.jpg

wVNulLU.gif

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.