Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A rendszer a __try és __except kulcsszavakat használja a keretalapú kivételkezelő létrehozásához. Az alábbi példa egy kivételkezelő struktúráját mutatja be.
__try
{
// guarded body of code
}
__except (filter-expression)
{
// exception-handler block
}
Vegye figyelembe, hogy a __try blokk és a kivételkezelő blokk kapcsos zárójeleket ({}) igényel. Nem engedélyezett goto utasítás használata egy __try blokk törzsébe vagy egy kivételkezelő blokkba való ugráshoz. Ez a szabály a kivételkezelőkre és a megszakításkezelőkre egyaránt vonatkozik.
A __try blokk tartalmazza a kivételkezelő által védett kódtörzset. A függvények tetszőleges számú kivételkezelővel rendelkezhetnek, és ezek a kivételkezelési utasítások ugyanabban a függvényben vagy különböző függvényekben ágyazhatók be. Ha kivétel történik a __try blokkon belül, a rendszer átveszi az irányítást, és megkezdi a kivételkezelő keresését. A keresés részletes leírását a Kivételkezeléscímű témakörben találja.
A kivételkezelő csak olyan kivételeket fogad, amelyek egyetlen szálon belül fordulnak elő. Ez azt jelenti, hogy ha egy __try blokk meghívja a CreateProcess vagy CreateThread függvényt, a rendszer nem küldi el az új folyamaton vagy szálon belüli kivételeket a kezelőnek.
A rendszer kiértékeli az egyes kivételkezelők szűrőkifejezését, és védi azt a kódot, amelyben a kivétel történt, amíg a kivételt nem kezelik, vagy nincsenek több kezelők. A szűrőkifejezéseket az alábbi három érték egyikeként kell kiértékelni.
| Érték | Jelentés |
|---|---|
| EXCEPTION_EXECUTE_HANDLER | A rendszer átadja a vezérlőt a kivételkezelőnek, és a végrehajtás abban a veremkeretben folytatódik, amelyben a kezelő található. |
| EXCEPTION_CONTINUE_SEARCH | A rendszer továbbra is keres egy kezelőt. |
| EXCEPTION_CONTINUE_EXECUTION | A rendszer leállítja a kezelő keresését, és visszaadja a vezérlést arra a pontra, ahol a kivétel történt. Ha a kivétel nem kontinuális, ez EXCEPTION_NONCONTINUABLE_EXCEPTION kivételt eredményez. |
A szűrőkifejezés kiértékelése annak a függvénynek a kontextusában történik, amelyben a kivételkezelő található, annak ellenére, hogy a kivétel egy másik függvényben történt. Ez azt jelenti, hogy a szűrőkifejezés hozzáférhet a függvény helyi változóihoz. Hasonlóképpen, a kivételkezelő blokk hozzáférhet annak a függvénynek a helyi változóihoz, amelyben található.
További példákért lásd: Kivételkezelő használata.
További információ a szűrőkifejezésekről és a szűrőfüggvényekről: Keretalapú kivételkezelés.