Din păcate, construirea aplicațiilor include codarea. Indiferent de cât de atent îți scrii / depanezi programul, îți va fi imposibil să îți imaginezi fiecare 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.
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 excepție.
O aplicație răspunde la o excepție fie executând un cod de terminație, 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ți blocul de pază protejat, cu excepția on do begin exception block-handles SomeException end; 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ți manechinul: = 10 / Zero; cu excepția EZeroDivide do MessageDlg ('Nu se poate împărți cu zero!', mtError, [mbOK], 0); Sfârșit;…
Atunci 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 scurgere 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ți bloc protejat de cod în sfârșit terminare blok - cod pentru resurse gratuite final;
Exemplu:
... AboutBox: = TAboutBox.Create (nul); încercați AboutBox.ShowModal; în sfârșit AboutBox.Release; Sfârșit;…
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.
Când construiți un program cu gestionare de excepții, este posibil să nu doriți ca Delphi să utilizeze 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.
Ideea acestui articol este de a vă oferi doar o privire rapidă asupra excepțiilor. Pentru discuții suplimentare despre tratarea excepțiilor, luați în considerare opțiunile de gestionare a excepțiilor în Delphi Exception Handling, folosind un instrument precum Delphi Crash / Exception Handling cu Bug Reporting și unele dintre următoarele articole conexe: