Klaidų ir išimčių tvarkymas „Delphi“ programose

Deja, statybų programos apima kodavimą. Nepaisant to, kaip kruopščiai rašote / derinate savo programą, neįmanoma įsivaizduoti kiekvienos situacijos, kuri gali suklysti. Pavyzdžiui, nepatyręs vartotojas gali pabandyti atidaryti neegzistuojantį failą arba į duomenų lauką įvesti blogą vertę.
Vartotojai daro klaidas ir mes turėtume būti pasirengę tvarkyti / užkirsti kelią šioms klaidoms visur ir kur tik įmanoma.

Klaidos, išimtys?

Išimtis paprastai yra klaidos sąlyga ar kitas įvykis, nutraukiantis įprastą programos vykdymo procesą. Kai tikrinant kodo eilutę atsiranda klaida, Delphi sukuria (pakelia) objektą, kilusį iš TObject, vadinamą išimties objektu.

Saugomi blokai

Taikomoji priemonė reaguoja į išimtį vykdydama kažkokį nutraukimo kodą, tvarkydama išimtį arba abu. Būdas įgalinti klaidų / išimčių spąstus nurodytame kode, išimtis turi įvykti saugomame teiginių bloke. Bendrasis kodas atrodo taip:

bandyti. {saugomas kodo blokas} išskyrus. pradėti daryti. {išimtis block-rankenos SomeException} pabaiga; galas;
instagram viewer

A pabandykite / išskyrus pareiškimas vykdo teiginius saugomame kodo bloke. Jei teiginiai vykdomi nekeliant jokių išimčių, išimties blokas ignoruojamas, o kontrolė perduodama teiginiui po galiniu raktiniu žodžiu.

Pavyzdys:

... Nulis: = 0; bandyti. manekenas: = 10 / nulis; išskyrus. „EZeroDivide“. MessageDlg ('Negalima padalyti iš nulio!', MtError, [mbOK], 0); galas;... 

Išteklių apsauga

Kai kodo dalis įgyja išteklių, dažnai reikia įsitikinti, kad ištekliai vėl išleidžiami (arba galite gauti atminties nutekėjimas), nepriklausomai nuo to, ar kodas užpildomas paprastai, ar jį nutraukia išimtis. Šiuo atveju naudojama sintaksė pagaliau raktinis žodis ir atrodo taip:

{koks nors kodas išteklių paskirstymui} bandyti. {saugomas kodo blokas} pagaliau. {pabaigos blokas - nemokamų išteklių kodas} galas;

Pavyzdys:

... „AboutBox“: = „TAboutBox“. Sukurti (nulis); bandyti. Apie „Box“. „ShowModal“; pagaliau. Apie „Box“. Atleiskite; galas;... 

Taikymas. „OnException“

Jei jūsų programa nesutvarko klaidos, sukėlusios išimtį, „Delphi“ naudos numatytąją išimčių tvarkyklę - ji tiesiog pasirodys pranešimų laukelyje. Jei norite sulaikyti klaidas programos lygiu, galite apsvarstyti galimybę parašyti kodą „OnException“ įvykyje, skirtą „TApplication“ objektui.

Pertrauka dėl išimčių

Kurdami programą su išimčių tvarkymu, galite nenorėti, kad „Delphi“ sulaužytų išimtis. Tai yra puiki savybė, jei norite, kad „Delphi“ parodytų, kur įvyko išimtis; tačiau tai gali erzinti, kai išbandote savo išimčių tvarkymą.

Keletas baigiamųjų žodžių

Šio straipsnio idėja yra tik trumpai apžvelgti, kokios yra išimtys. Jei norite toliau diskutuoti dėl išimčių tvarkymo, apsvarstykite Dėl „Delphi“ išimčių tvarkymo išimčių, naudojant tokį įrankį kaip „Delphi“ avarijos / išimčių tvarkymas naudojant pranešimus apie klaidas ir kai kurie iš šių susijusių straipsnių: