Din păcate, construirea aplicațiilor include codarea. Indiferent de cât de atent scrieți / debugați programul, va fi imposibil să vă imaginați orice situație care poate merge prost. Utilizatorul fără experiență ar putea, de exemplu, încerca să deschidă un fișier inexistent sau să introducă o valoare proastă într-un câmp de date.
Utilizatorii fac greșeli și ar trebui să fim pregătiți să gestionăm / să prevenim aceste erori oriunde și ori de câte ori este posibil.
Erori, excepții?
O excepție este în general o stare de eroare sau un alt eveniment care întrerupe fluxul normal de execuție într-o aplicație. Ori de câte ori o eroare rezultă din procesarea unei linii de cod, Delphi creează (ridică) un obiect descendent din TObject numit obiect de excepție.
Blocurile păzite
O aplicație răspunde la o excepție, fie executând un cod de terminare, gestionând excepția, fie ambele. Modul de a activa capcarea erorilor / excepțiilor într-un cod dat, excepția trebuie să apară într-un bloc protejat de declarații. Codul general arată:
încerca. {bloc protejat de cod} cu exceptia. on începe. {exception block-manerele SomeException} final; Sfârșit;
A încercați / cu excepția instrucțiunea execută declarațiile din blocul de cod protejat. Dacă instrucțiunile se execută fără crearea de excepții, blocul de excepții este ignorat și controlul este trecut la instrucțiunea după cuvântul cheie final.
Exemplu:
... Zero: = 0; încerca. manechin: = 10 / Zero; cu exceptia. pe EZeroDivide do. MessageDlg ('Nu se poate împărți la zero!', MtError, [mbOK], 0); Sfârșit;...
Protejarea resurselor
Când o secțiune de cod achiziționează o resursă, este deseori necesar să vă asigurați că resursa este eliberată din nou (sau puteți obține o pierdere de memorie), indiferent dacă codul se completează normal sau este întrerupt de o excepție. În acest caz, sintaxa folosește in cele din urma cuvinte cheie și arată:
{unele coduri pentru a aloca resurse} încerca. {bloc protejat de cod} in cele din urma. {termination blok - cod pentru resurse gratuite} Sfârșit;
Exemplu:
... AboutBox: = TAboutBox. Creați (nil); încerca. AboutBox. ShowModal; in cele din urma. AboutBox. Eliberare; Sfârșit;...
Aplicație. OnException
Dacă aplicația dvs. nu se ocupă de eroarea care a cauzat excepția, atunci Delphi va folosi gestionarul de excepții implicit - va deschide doar o casetă de mesaje. Puteți lua în considerare scrierea codului în evenimentul OnException pentru obiectul TApplication, pentru a captura erorile la nivelul aplicației.
Break On Exceptions
Când construiți un program cu gestionare de excepții, este posibil să nu doriți ca Delphi să folosească Excepții. Aceasta este o caracteristică excelentă dacă doriți ca Delphi să arate unde a apărut o excepție; cu toate acestea, poate fi enervant atunci când testați propriile dvs. manipulări de excepții.
Puține cuvinte finale
Ideea acestui articol este de a vă oferi doar o privire rapidă despre ce excepții sunt. Pentru discuții suplimentare despre tratarea excepțiilor, luați în considerare Despre gestionarea excepțiilor în Delphi Exception Handling, folosind un instrument de genul Delphi Crash / Exception Handling cu raportarea erorilor și unele dintre următoarele articole conexe: