Kahjuks hõlmab hoonerakendus kodeerimist. Sõltumata sellest, kui hoolikalt te oma programmi kirjutate / silute, on võimatu ette kujutada igat olukorda, mis võib valesti minna. Kogenematu kasutaja võib näiteks proovida avada olematu faili või sisestada andmevälja halva väärtuse.
Kasutajad teevad vigu ja me peaksime olema valmis neid vigu käsitlema / vältima igal pool ja igal võimalusel.
Vead, erandid?
Erandiks on tavaliselt tõrkeolukord või mõni muu sündmus, mis katkestab rakenduse tavapärase täitmisvoo. Kui koodirida töötlemisel ilmneb tõrge, loob (tõstab) Delphi TObjectist järeltulija objekti, mida nimetatakse erandiobjektiks.
Valvatavad klotsid
Rakendus reageerib erandile kas mõne lõpetamiskoodi käivitamise, erandi käsitlemise või mõlema abil. Võimalus vea / erandi lõksustamiseks antud koodis peab erand toimuma valvatud avalduste plokis. Üldine kood näeb välja selline:
proovida. {valvatud koodiplokk} välja arvatud. edasi algab. {erand block-handles SomeException} lõpp; lõpp;
A proovida / v.a.
avaldus käivitab valvatud koodiplokis olevad avaldused. Kui avaldused täidetakse ilma erandeid tegemata, siis erandiplokki ignoreeritakse ja kontroll antakse üle lõppsõnale järgnevale avaldusele.Näide:
... Null: = 0; proovida. mannekeen: = 10 / null; välja arvatud. saidil EZeroDivide teha. MessageDlg ('Ei saa nulliga jagada!', MtError, [mbOK], 0); lõpp;...
Ressursside kaitsmine
Kui koodiosa omandab ressursi, on sageli vaja tagada ressursi uuesti vabastamine (või võite saada koodi mäluleke), sõltumata sellest, kas kood lõpeb tavapäraselt või katkestab erand. Sel juhul kasutab süntaks lõpuks märksõna ja näeb välja selline:
{mingi kood ressursside eraldamiseks} proovida. {valvatud koodiplokk} lõpuks. {lõpetamise blok - ressursside vaba kood} lõpp;
Näide:
... AboutBox: = TAboutBox. Loo (null); proovida. AboutBoxist. ShowModal; lõpuks. AboutBoxist. Vabasta; lõpp;...
Rakendus. OnException
Kui teie rakendus ei käsitle erandi põhjustanud tõrget, kasutab Delphi vaikimisi erandite käitlejat - see lihtsalt hüppab teadete väljale. Programmi tasemel vigade lõksustamiseks võite kaaluda koodi kirjutamist OnExceptioni sündmuse korral TApplicationi objekti jaoks.
Erandite katkestamine
Erandite käsitlemisega programmi loomisel ei pruugi te soovida, et Delphi katkestab erandid. See on suurepärane funktsioon, kui soovite, et Delphi näitaks, kus on erand tehtud; kuid see võib teie enda erandite käsitlemise katsetamisel tüütu olla.
Paar lõppsõna
Selle artikli mõte on anda teile lihtsalt kiire ülevaade, mis on erandid. Erandite käsitlemise edasiseks arutamiseks kaaluge Erandite käsitlemine Delphi erandkäsitluses, kasutades tööriista nagu Delphi krahhi / erandi käsitlemine veateadetega ja mõned järgmistest seotud artiklitest: