Sdílet prostřednictvím


Míchání (strukturované) C a C++ výjimky

Pokud chcete vytvořit lépe přenositelný kód, pomocí strukturovaných zpracování výjimek v C++ program není doporučeno.Však mohou někdy chcete zkompilovat s /EHa a strukturované výjimky a C++ zdrojový kód a potřebují některé zařízení pro zpracování oba typy výjimek.Protože obslužné rutiny strukturované výjimky pojmu objekty nebo zadané výjimky, jej nemůže zpracovat výjimek vyvolaných C++ kódu; však C++ úlovku obsluhy lze zpracovávat strukturované výjimky.Jako výjimka, C++, zpracování syntaxe (akci, throw, úlovku) nejsou přijímány c kompilátor, ale zpracování Syntaxe strukturovaných výjimek (__try, __except, __finally) je podporován kompilátor C++.

Viz _set_se_translator informace o zpracování strukturované výjimky jako C++ výjimky.

Pokud mísíte strukturované a C++ výjimky, pamatujte si následující:

  1. Nelze směšovat C++ výjimky a strukturované výjimky v rámci stejné funkce.

  2. Ukončení rutiny (__finally bloky) jsou vždy spouštěny, dokonce i během příkazem po vyvolání výjimky.

  3. Zpracování výjimek C++ může zachytit a zachovat unwind sémantiku v všechny moduly zkompilovány s /EH volba kompilátoru (Tato možnost umožňuje unwind sémantiku).

  4. Mohou existovat některé situace, ve které destruktoru funkce není jen pro všechny objekty.Například structured exception dochází při pokusu funkce volání přes ukazatel neinicializované funkce a funkce trvá jako parametry objektů, které byly vyrobeny před volání, tyto objekty nebude mít jejich destruktory nazývá během unwind zásobníku.

Co chcete vědět více?

Viz také

Referenční dokumentace

Zpracování výjimek v C++