Kline777 Posted March 26, 2014 Report Share Posted March 26, 2014 (edited) 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 March 26, 2014 by Kline777 Link to comment Share on other sites More sharing options...
nunopicado Posted March 26, 2014 Report Share Posted March 26, 2014 (edited) 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 March 26, 2014 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 More sharing options...
Kline777 Posted March 26, 2014 Author Report Share Posted March 26, 2014 Já dei 30 cabeçadas na mesa hoje... tens razão... pus-me aqui com invenções e nao tava a dar porque pus o raise no fim do tratamento... o que o levava a manter a excepçao para o nivel acima... que nervos! Link to comment Share on other sites More sharing options...
nunopicado Posted March 26, 2014 Report Share Posted March 26, 2014 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 More sharing options...
Kline777 Posted March 26, 2014 Author Report Share Posted March 26, 2014 Não mereco o titulo de try catch user 😄 1 Report Link to comment Share on other sites More sharing options...
nunopicado Posted March 26, 2014 Report Share Posted March 26, 2014 hahahaha Acho que aos 500 posts mudas de titulo... Começa a escrever. 2 Report "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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now