Excepții în Delfi, clasele de excepție

Excepții (excepții) - este o metodă de transmitere a informațiilor despre eroarea run-time sau alte circumstanțe excepționale ale locului, care este primul dintre ei a găsit în codul oferit să se ocupe de astfel de situații. În cele din urmă, eroarea din cauza studiu incomplet al tuturor opțiunilor programului. În versiunile ulterioare ale programului detectate erori pentru a încerca să corecteze, dar mult mai pot fi furnizate la o dată.

caracteristici:
excepții și excepții de manipulare este diferită de prelucrarea convențională în care ne permite să se separe codul care detectează o eroare de cod care răspunde la ea, și, de asemenea, deoarece acesta oferă un canal automat și non-intruziv de comunicare între cele două părți ale codului. Codul detectează o eroare, o excepție este ridicată, indicând faptul că apare. Codul, care răspunde la semnalul de eroare, numit handler excepție. Atunci când o excepție este ridicată, începe căutarea unui manipulator de exceptii adecvat. După ce a constatat, controlul este trecut la acesta, iar programul nu se întoarce la codul care a cauzat o excepție. După executarea codului handler excepție, sau să continue executarea programului cu următoarea declarație handler sau căutarea continuă pentru un alt eveniment handler. Acest lucru se poate schimba în mod dramatic cursul programului.

Excepție Object Model Pascal este un neregenerabilă (non-resumable). În cazul unei situații excepționale, nu va fi capabil să se întoarcă la punctul în care își are originea, pentru continuarea programului (acest lucru vă permite să facă regenerabilă care pot fi reluate) modelul (). excepții nonrenewable distruge stiva, deoarece acestea sunt scanate în căutarea intermediarului său; Modelul regenerabilă este necesar pentru a menține stiva, starea registrelor CPU la punctul de eroare și de căutare de tratare și punerea în aplicare într-un singur teanc. Sistemul de procesare regenerabile de excepții este mult mai dificil de a crea și de a folosi, mai degrabă decât non-regenerabile.

În Delphi, există excepții în formă de obiecte. Ele sunt încântați și acolo, atâta timp cât excepția nu este tratată.

Excepție de prelucrare este întotdeauna distruge instanța excepție. Cu toate acestea, programatorul nu ar trebui să fie doar în măsură să se ocupe de excepții, dar, de asemenea, dreptul de a iniția o excepție atunci când apare o eroare.

clasele de excepție

Tendința actuală în utilizarea claselor OOP și instanțele lor să se ocupe de excepții. clasa de bază pentru toate clasele de excepție în Delphi este clasa de excepție, descendent direct al clasei TObject. Acesta este tipul care este handler implicit pentru toate excepțiile.

Toate clasele de excepție sunt numite de obicei cu litera „E“. excluderi standard de liste declarate în Delphi, a pus pot fi găsite în literatura de specialitate.

Clasa de excepție definită în modulul aproximativ SysUtils urmează. Clasa de bază include domeniul de tip string FMessage, anunțul subiect privat. Este disponibil cu mesajul de proprietate, cu acces direct la câmpul pentru citirea și scrierea valorii sale. Este această linie de ieșire atunci când procesarea unei excepții în mod implicit.

Creare Constructor (Const Msg: String);
CreateFmt Constructor (Const Msg: String; Const Args: Array constantei); (Mesajul Formatted)
Pentru utilizarea resurselor:
CreateRes (Ident Constructor: Integer); suprasarcină;
CreateRes (ResStringRec Constructor: PResStringRec); suprasarcină;

Există mai mulți designeri de a utiliza sistemul de ajutor
Crearea Msg are Constructor un singur parametru de tipul String. Această linie ar trebui să fie șir informativ și semnificative care reprezintă o clasă de excepție sau o excepție. Și o mulțime de designeri.

Excepții în bazele de date

Printre descendenții clasei de excepție, există mai multe clase de clase concepute pentru a lucra cu baze de date. În primul rând, EDatabaseError și EDBEngineError. Acesta din urmă este de interes pentru examinare ulterioară.

EDatabaseError = Clasa (Excepție); // class definită în modulul DB
EDBEngineError = Clasa (EDatabaseError) // DBTables modulului Detected

În cazul în care cele mai multe clase de situații excepționale Delphi afișează pur și simplu un mesaj de eroare, sunt create bazele de date excepții, astfel încât să permită să furnizeze o listă de posibile erori, inclusiv coduri de eroare, cum ar fi bazele de date locale, și SQL-Server. Pentru a face acest lucru, clasa EDBEngineError are două proprietăți suplimentare: ERRORCOUNT (număr de erori) și erori (lista tuturor erorilor). Fiecare element al proprietății Erori este un TDBError obiect de clasă, a anunțat în PB și are cinci proprietăți pentru citire (Ro), revenind modulul de eroare detaliat.
În funcție de codul de eroare, vă poate oferi o varietate de opțiuni pentru răspunsuri la ele. Codurile de erori BDE sunt listate în fișierul BDE.INT.

excepții silențioase

Arhitectura situațiilor de manipulare excepție Delphi, există un alt mijloc de manipulare excepție. Aceasta este o instanță a oricărei excepții, inițiată de clasa EAbort sau descendenții săi. compania Borland numește aceste excepții „tăcut» (silențioase) sau «ascunse». Faptul că tratamentul acestor excepții nu se ridică deasupra unui nivel și nu oferă nici un mesaj de ieșire. De fapt, a distrus rapid excepții. Un astfel de tratament în sine nu creează: ea trebuie, dacă este necesar, să furnizeze și procesa un programator.

excepții hardware

Trebuie remarcat faptul că, în plus, există excepții Delphi excepții hardware asociate cu operarea de întreruperi hardware și hardware. Acestea includ erori care apar atunci când utilizați imprimanta, unitatea de disc, etc. Există o oportunitate certă de a include excepții hardware în excepții Delphi și, astfel, să se ocupe de astfel de situații. Cu toate acestea, excepțiile de hardware diferă de excepții Delphi.

articole similare