A ly és t konstrukciói delphi-ban
A Delphi programok beépített alapértelmezett kivételkezeléssel rendelkeznek, ami egyes esetekben elegendő lehet. beépített kivételkezelés célokat egyrészt az, hogy több információt szerezzen a hiba és / vagy az a hely, annak eredetét, másrészt, hogy a felvétele natív kód annak kezelésére, ha a szokásos kezelés nem teljesül.
Ahhoz, hogy a Delphi programokat a kivételek kezelésére szolgáló mechanizmusra kényszerítse, a megfelelő operátorokat a speciális nyelvi konstrukciókba kell helyezni.
Próbálja meg az építést. Végül. vég
A Try..Finally construct garantálja, hogy a program végrehajtja az erőforrások felszabadítását végző operátorokat, függetlenül attól, hogy kivétel történt-e vagy sem. Így ezt a konstrukciót akkor használjuk, ha elégséges ahhoz, hogy egyszerűen biztonságosan leállítsuk a programot, miután kivétel történt. Az ilyen konstrukciók kivételei nem kerülnek feldolgozásra, feldolgozásukat tovább továbbítják. Ha nincs más feldolgozás, akkor a vezérlő átadódik az alapértelmezett kezelőnek.
A konstrukció szintaxisa a következő:
<операторы захвата ресурсов>megpróbál
<операторы, которые могут вызвать исключение>végül
<операторы, освобождающие ресурсы>Vége;
Meg kell jegyeznünk, hogy ha a kivétel nem merül fel, akkor a Végső szakasz üzemeltetői forrásokat is felszabadítanak. A különbség az, hogy:
• Először is, ha egy kivétel történik, a Try szakasz egyes állításai nem kerülnek végrehajtásra, és a normál működés során minden végrehajtásra kerül;
• másodszor, megjelenése után a források miatt gerjesztés kivétellistájára kivételkezelőt továbbra is, mint kivételek ez a struktúra nem kerülnek feldolgozásra, de normál üzemben a kezelő után lesz végrehajtva az építési Try..Finally.
Ha lehetséges, szerezzen be különböző forrásokat a Try konstrukció előtt. Ez biztosítja, hogy a Végső szakasz megfelelően felszabadítsa az erőforrásokat.
C: = kurzor;
Kurzor: = crHourGlass;
edDivr.Visible: = false;
megpróbál
A / B
végül
Kurzor: = C;
edDivr.Visible: = true;
végén;
Próbálja meg az építést. Kivéve. vég
A Kivétel szakaszban lévő operátorok csak akkor kerülnek végrehajtásra, ha a kizárások felmerülnek, de soha nem szokásos programművelettel. Ezenkívül az Except szakaszban több kivételkezelő is lehet, amelyek mindegyike egy bizonyos kivételtípusra irányul. A kivételek végrehajtása után a kivételek törlődnek, és a program a Try..Except konstrukciót követő utasítással folytatódik.
A konstrukció szintaxisa a következő:
Mint korábban, a Try szekciótagok kivételeket is kiválaszthatnak. A Kivétel részben olyan kezelőket tartalmaz, amelyek végrehajtják a tisztítási kódot, a végződtetési kódot. Ha azonban egy hiba nem fordul elő, az Except szakaszban lévő operátorok kihagyásra kerülnek.
Mindkét konstrukció Try részének kezelőit védett kódnak hívják.
megpróbál
A / B;
kivéve
lbRes.Caption: = 'Niht';
// raise;
végén;
Beágyazott szerkezetek Próbálja meg
A Delphi lehetővé teszi a beágyazott kivételkezelő konstrukciók használatát. A beágyazás mélysége és a szerkezetek sorrendje nem korlátozott. A beágyazott szerkezetek általános szintaxisa Próbálja ki:
Tehát, mint Try..Finally kialakítása valóban nem kezeli a kivételt, majd helyezze azt a szerkezeten belül try..except, mi használ Try..Finally tervez visszatérhet a rendszer erőforrásait, és csak azután a segítségével tervezési try..except kezelni a kivétel .