Newsgroup: it.comp.lang.delphi
Titolo: Gestione eccezioni

All'interno di un blocco Try..Except intercetto un messaggio di errore:
try
  IdTCPClient.Connect;
except
  on E:Exception do
  begin
    showmessage(E.Message);
    exit;
  end;
end;
In E.Message ritrovo lo stesso messaggio di errore di sistema che avrei se 
non usassi Try..Except e con Exit evito la visualizzazione del msg di 
sistema.
Mi potrebbe anche andar bene perchč per come č strutturato il programma la 
procedura deve essere abbandonata ma se cosě non fosse e volessi avanzare 
nel codice della stessa procedura come potrei evitare la visualizzazione del 
msg di sistema e gestirmi autonomamente gli errori?
Grazie
Valter

 msg di sistema e gestirmi autonomamente gli errori?
E' proprio nel blocco except che si gestiscono le eccezioni...
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 E' proprio nel blocco except che si gestiscono le eccezioni...
Si, mi sono spiegato male.
Da qualche parte del programma chiamo ConnettiCli;
procedure ConnettiCli;
begin
  try
    IdTCPClient.Connect;
  except
    on E:Exception do
    begin
      showmessage(E.Message);  // questo non ci sarà, è un test
      // con Exit seguente torno da dove sono venuto
      // e non visualizzo il messaggio di errore di sistema
      exit;
    end;
  end;
  // posso procedere in 
q.to
 codice senza che si visualizzi alcun
  // messaggio di errore nel caso venga sollevato?
  // o l'unico modo per non visualizzare il msg è quello
  // di uscire bruscamente dall' Except?
  // ...
  // altro codice
  // ...
end; 

   // messaggio di errore nel caso venga sollevato?
Sì.


 Sì.
Hai un esempio, un link...su Google ho trovato come intercettarli, leggerli 
ma non come evitarne la visualizzazione
 

 ma non come evitarne la visualizzazione
Non capisco proprio che vuoi dire.  Se non vuoi visualizzare un errore,
non lo visualizzi.


 non lo visualizzi.
Pare inspiegabile ed ora capisco che non potevi capire...
per tutto il giorno ho lavorato su una macchina dell'ufficio e pur inserendo
IdTCPClient.Connect nel Try..Except (lasciando il server stoppato al fine di
sollevare l'eccezione sul tentativo di connessione) il messaggio di errore
"connection refused" continuava a saltare fuori...
ho portato il codice a casa e ora si comporta esattamente come tu ti
aspettavi
è possibile che sia qualche opzione del compilatore? di Delphi?
Mah?

 è possibile che sia qualche opzione del compilatore? di Delphi?
C'e' un'opzione in options|Debug (mi pare sia "stop on delphi 
exceptions" o qsa di simile) che fa si che il debugger si fermi ad ogni 
eccezione che incontra facendoti vedere il messaggio.
Forse la tua macchina di casa ha l'opzione disattivata e l'altra no.
Se lanci l'exe fuori dal debugger pero' non dovrebbe uscire il 
messaggio, esce solo se stai debuggando da dentro l'ide.
ciao
Giacomo

 messaggio, esce solo se stai debuggando da dentro l'ide.
L'assurdo è che testavo l'eseguibile!
L'opzione a cui ti riferisci è attiva su entrambi i pc...
sicuramente c'è un errore da parte mia, e domani in ufficio verificherò, ma
il codice è *proprio ma proprio* lo stesso...
fino a domani non sto quieto
:-)
Grazie
Ciao

il codice è *proprio ma proprio* lo stesso...
Non è un problema di codice, ma di come lanci l'applicazione.  Se
lanci direttamente l'eseguibile ottieni lo stesso comportamento che
hai, lanciandolo con l'IDE e disattivando l'opzioni di "Stop on Delphi
exceptions".