Sajnos az építési alkalmazások tartalmazzák a kódolást. Függetlenül attól, hogy milyen alaposan írja / debugálja a programját, lehetetlen elképzelni minden olyan helyzetet, amely rosszul fordulhat elő. A tapasztalatlan felhasználó például megpróbálhat egy nem létező fájlt megnyitni, vagy rossz adatot adhat meg egy adatmezőbe.
A felhasználók hibákat követnek el, és fel kell készülnünk arra, hogy ezeket a hibákat mindenhol kezeljük / megakadályozzuk, amikor csak lehetséges.
Hibák, kivételek?
Kivétel általában hibaállapot vagy más esemény, amely megszakítja az alkalmazás normál végrehajtási folyamatát. Ha egy kódsor feldolgozásakor hibát okoz, Delphi létrehoz egy TObject-ből származtatott objektumot, amelyet kivételes objektumnak nevez (emel fel).
Őrzött blokkok
Az alkalmazás válaszol egy kivételre vagy valamilyen végkód végrehajtásával, a kivétel kezelésével, vagy mindkettővel. A hiba / kivétel csapdájának engedélyezése egy adott kódon belül, a kivételnek egy őrzött utasításblokkban kell történnie. Az általános kód a következőképpen néz ki:
próbáld ki. {őrzött kódblokk} kivéve. tovább kezdjük. {kivétel blokk-kezeli SomeException} end; végén;
A próbáld / kivéve utasítás az őrzött kódblokkban szereplő utasításokat hajtja végre. Ha az utasítások kivétel nélkül történnek meg, akkor a kivétel blokkot figyelmen kívül hagyják, és a vezérlés átadódik a vég kulcsszót követő utasításhoz.
Példa:
... Zero: = 0; próbáld ki. próbabábu: = 10 / nulla; kivéve. az EZeroDivide do-on. MessageDlg ('Nem osztható nullával!', MtError, [mbOK], 0); végén;...
Források védelme
Amikor egy kódrészlet megszerzi az erőforrást, gyakran meg kell győződnie arról, hogy az erőforrást újra kiadják (vagy előfordulhat, hogy a memória szivárgás), függetlenül attól, hogy a kód teljes mértékben teljesül-e, vagy egy kivétel megszakítja. Ebben az esetben a szintaxis használja végül kulcsszó, és így néz ki:
{valamilyen kód az erőforrások elosztásához} próbáld ki. {őrzött kódblokk} végül. {bezárási blok - kód a szabad forrásokhoz} végén;
Példa:
... AboutBox: = TAboutBox. Létrehozás (nulla); próbáld ki. AboutBox. ShowModal; végül. AboutBox. Kiadás; végén;...
Alkalmazás. OnException
Ha az alkalmazás nem kezeli a kivételt okozó hibát, akkor a Delphi az alapértelmezett kivételkezelőt fogja használni - csak egy üzenőablak jelenik meg. Fontolhatja a kód írását az OnException eseményben a TApplication objektumhoz, hogy csapdákat rögzítsen az alkalmazás szintjén.
Break kivételek
Amikor kivételkezelő programot készít, előfordulhat, hogy nem akarja, hogy a Delphi törje be a Kivételeket. Ez egy nagyszerű szolgáltatás, ha azt akarja, hogy Delphi megmutatja, hol történt kivétel; ám bosszantó lehet, ha teszteli a saját kivételkezelését.
Kevés utolsó szó
A cikk célja az, hogy csak rövid pillantást vegyen a kivételekre. A kivételek kezelésével kapcsolatos további megbeszélések megfontolása A kivételek kezeléséről a Delphi kivételkezelés területén, olyan eszközökkel, mint a Delphi-ütközés / kivételkezelés a hibajelentéssel és néhány a következő kapcsolódó cikkekből: