Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    1,003

    [Delphi] Eccezioni "silenziose"

    vorrei far in modo ke *qualunque* eccezione avvenga, questa nn venga visualizzata (col messaggio di eccezione)
    si può fare?



  2. #2
    codice:
     try
      ..
      (tuo codice)
      ..
     exception
      on e: exception do
     end;

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    ApplicationEvents...

    Quando si verifica un'eccezione all'interno di un blocco di codice, se questo è "protetto" (incluso in un blocco try...except), viene ricercato il codice di gestione dell'errore risalendo nello stack...fino ad arrivare al gestore predefinito delle eccezioni, codificato nella classe che rappresenta l'applicazione (TApplication), il quale visualizza semplicemente un messaggio di errore e successivamente riprende la normale esecuzione del programma gestendo i messaggi in arrivo nella coda dell'applicazione.

    Per impedire la visualizzazione del messaggio, puoi proteggere il codice all'interno del costrutto try...except, lasciando la parte tra except ed end vuota, che di fatto non esegue alcuna operazione significativa se non quella di distruggere automaticamente l'eccezione; tuttavia, ti sconsiglio questa tecnica poichè molti componenti usano le eccezioni per garantire che non venga eseguito il codice che segue un metodo che ha generato un errore; pertanto, se gestisci (assorbi) l'eccezione, devi provvedere a verificare se è possibile continuare l'esecuzione della routine oppure no.

    La seconda alternativa che hai è quella di sostituire il gestore predefinito delle eccezioni con un gestore personale. Puoi fare questo posizionando sul form principale (o su un Data Module) il componente TApplicationEvents (pagina "Additional" della Palette dei Componenti) che supporta l'evento OnException, generato ogni volta che si verifica un'eccezione (passata come parametro) non gestita attraverso un blocco try...except.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.