Sdílet prostřednictvím


Structured Exception zpracování (C++)

Windows 95, Windows 98 a Windows 2000 (dříve Windows NT) podporují robustní přístup ke zpracování výjimek, které se nazývá structured exception handling, který zahrnuje spolupráci operačního systému, ale má také přímé podpory programovací jazyk.

Gramatika

s výjimkou příkaz try :

__try prohlášení sloučenina

__except( výraz ) prohlášení sloučenina

Poznámky

Výjimkou je událost, která neočekávané nebo naruší schopnost procesu pokračovat normálně.Výjimky může rozpoznat hardware a software.Hardwarové výjimky patří vydělením hodnotou nula a přetečení číselného typu.Software výjimky patří detekovat a signalizovat voláním systému RaiseException funkci a zvláštních situací rozpoznán systémem Windows.

Můžete napsat kód spolehlivější s structured exception handling.Můžete zajistit, že prostředky, jako jsou například soubory a bloků paměti jsou správně uzavřen v případě, že neočekávané ukončení.Může také zpracovat konkrétní problémy, jako je například nedostatek paměti s stručné strukturovaný kód, který není závislý na goto prohlášení nebo komplikovanou testování návratové kódy.

Akci-s výjimkou a zkuste nakonec příkazy jsou Microsoft rozšíření jazyka c umožňuje aplikacím získat po události, které by normálně ukončit provádění řízení programu.

[!POZNÁMKA]

Structured exception handling pracuje s c a C++ zdrojové soubory.Však ji není navržena speciálně pro C++.Přestože destruktory místních objektů bude volána při použití strukturované zpracování výjimek v C++ program (používáte-li /EHsc), můžete zajistit, že kód je obecnější pomocí zpracování výjimek v C++.Zpracování výjimek C++ mechanismus je pružnější, v tom, že je schopen zpracovat výjimky libovolného typu.

Existují dva mechanismy structured exception zpracování:

Tyto dva typy obslužné rutiny jsou odlišné, ale úzce souvisí prostřednictvím procesu nazývaného "příkazem zásobníku." Pokud dojde k výjimce, systém Windows hledá nedávno nainstalovaný zpracování výjimek, který je právě aktivní.Obslužná rutina postupovat třemi způsoby:

  • Předejte řízení ostatní obslužné rutiny (selhání rozpoznat výjimka).

  • Rozpoznat ale zrušit výjimku.

  • Rozpoznat a zpracovat výjimku.

Zpracování výjimek, který uznává výjimky nemusí být funkce, která byla spuštěna, když došlo k výjimce.V některých případech může být mnohem vyšší v zásobníku funkce.Aktuálně spuštěné funkce, jakož i všechny funkce v zásobníku snímku jsou ukončena.Během tohoto procesu je "unwound" zásobníku: místní proměnné ukončen funkcí, pokud nejsou statické, jsou vymazány ze zásobníku.

Jak je unwinds v zásobníku, volání operačního systému jakékoli ukončení rutiny vzniku pro každou funkci.Použití ukončení rutiny dává možnost Vyčištění zdroje, které by jinak zůstaly otevřené kvůli neobvyklému ukončení.Pokud jste zadali kritický oddíl, je možné ukončit ukončení obslužné rutiny.Je-li program ukončit, můžete provést další úkoly domácnosti jako uzavření a dočasné soubory.

Pokud máte c moduly, které používají structured exception handling, lze smíchat s C++ moduly, které používají C++ zpracování výjimek.Viz rozdíly zpracování výjimek.

Více informací naleznete:

Viz také

Referenční dokumentace

Zpracování výjimek v jazyce Visual C++

Klíčových slov jazyka C++