Sfortunatamente, la creazione di applicazioni include la codifica. Indipendentemente dalla cura con cui scrivi / esegui il debug del tuo programma, sarà impossibile immaginare ogni situazione che possa andare storta. L'utente inesperto potrebbe, ad esempio, provare ad aprire un file inesistente o inserire un valore errato in un campo dati.
Gli utenti commettono errori e dovremmo essere pronti a gestire / prevenire questi errori ovunque e quando possibile.
Errori, Eccezioni?
Un'eccezione è generalmente una condizione di errore o un altro evento che interrompe il normale flusso di esecuzione in un'applicazione. Ogni volta che si verifica un errore dall'elaborazione di una riga di codice, Delphi crea (genera) un oggetto discendente da TObject chiamato oggetto eccezione.
Blocchi custoditi
Un'applicazione risponde a un'eccezione eseguendo un codice di terminazione, gestendo l'eccezione o entrambi. Il modo per abilitare il trapping di errori / eccezioni all'interno di un determinato codice, l'eccezione deve verificarsi all'interno di un blocco protetto di istruzioni. Il codice generale è simile a:
provare. {blocco di codice custodito} tranne. su iniziare. {exception block-handle SomeException} end; fine;
UN prova / tranne L'istruzione esegue le istruzioni nel blocco di codice protetto. Se le istruzioni vengono eseguite senza che vengano sollevate eccezioni, il blocco delle eccezioni viene ignorato e il controllo viene passato all'istruzione seguendo la parola chiave end.
Esempio:
... Zero: = 0; provare. manichino: = 10 / Zero; tranne. su EZeroDivide do. MessageDlg ('Impossibile dividere per zero!', MtError, [mbOK], 0); fine;...
Protezione delle risorse
Quando una sezione di codice acquisisce una risorsa, è spesso necessario assicurarsi che la risorsa venga nuovamente rilasciata (o si potrebbe ottenere un perdita di memoria), indipendentemente dal fatto che il codice si completi normalmente o sia interrotto da un'eccezione. In questo caso, utilizza la sintassi infine parola chiave e si presenta come:
{del codice per allocare le risorse} provare. {blocco di codice custodito} infine. {termination blok - codice per liberare risorse} fine;
Esempio:
... AboutBox: = TAboutBox. Crea (zero); provare. AboutBox. ShowModal; infine. AboutBox. Pubblicazione; fine;...
Applicazione. OnException
Se la tua applicazione non gestisce l'errore che ha causato l'eccezione, Delphi utilizzerà il suo gestore di eccezioni predefinito: farà semplicemente apparire una finestra di messaggio. È possibile prendere in considerazione la scrittura di codice nell'evento OnException per l'oggetto TApplication, al fine di intercettare errori a livello di applicazione.
Break On Eccezioni
Quando si crea un programma con gestione delle eccezioni, è possibile che Delphi non interrompa le eccezioni. Questa è un'ottima funzionalità se vuoi che Delphi mostri dove si è verificata un'eccezione; tuttavia, può essere fastidioso quando si verifica la propria gestione delle eccezioni.
Poche parole finali
L'idea di questo articolo è di darti una rapida occhiata alle eccezioni. Per ulteriori discussioni sulla gestione delle eccezioni, considerare Gestione delle eccezioni nella gestione delle eccezioni di Delphi, usando uno strumento come Delphi Crash / Gestione delle eccezioni con segnalazione dei bug e alcuni dei seguenti articoli correlati: