Jump to content

[Resolvido] Tratamento de Excepções


Kline777
 Share

Recommended Posts

Isto é uma pergunta um bocado básica mas não tenho usado tantos try's como deveria...

Ora bem, tanto quanto já me apercebi, quando ocorre uma excepçao no Delphi ele salta para fora de todas as funções onde está até mostrar a mensagem de erro e ficar parado. Ou seja, se eu tiver isto

For i:=0 to 10 do
begin
  try
  //Do Stuff
  except
  on EParserException do
	result:=false
  end;
end;

//Fim da função

E ocorrer um erro na iteração 2 ele vai saltar imediatamente fora do For para o fim da função e sair...

O que posso fazer para guardar um log do erro na iteraçao 2 mas permitir que o loop continue até ao fim?

Edited by Kline777
Link to comment
Share on other sites

Com o Try...Finnally, ele termina o ciclo.

Mas com o Try...Except, o ciclo é mantido.

Olha este exemplo:

var
  i:integer;
  r:Real;
begin
    For i:=0 to 10 do
        try
           r:=10/i;  // Na primeira iteracção, vai dar divisão por 0
           memo1.Lines.add(IntToStr(i)+'. '+FloatToStr(r));
        except
          On E: Exception Do
              memo1.Lines.add(IntToStr(i)+'. '+E.Message);
        end;
end;

Com o resultado:

0. Floating point division by zero
1. 10
2. 5
3. 3.33333333333333
4. 2.5
5. 2
6. 1.66666666666667
7. 1.42857142857143
8. 1.25
9. 1.11111111111111
10. 1
Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

lol OK, tá certo.

Se te serve de consolo... já fiz isso aqui há tempos.

tratava a excepção, e punha o raise no tratamento.

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

hahahaha

Acho que aos 500 posts mudas de titulo...

Começa a escrever.

  • Vote 2

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.