Zpracování výjimek v jazyce Visual C++
Výjimka je chybový stav, nacházející se případně i mimo řízení programu, který brání programu pokračovat dle jeho pravidelné cesty spuštění.Určité operace, včetně vytvoření objektu, vstupu a výstupu souboru a volání funkcí z jiných modulů, představují možné zdroje výjimek i v případě, že program pracuje správně.Robustní kód je na výjimky připraven a zpracovává je.
Ke zjištění logických chyb v rámci programu nebo modulu lze místo výjimek použít kontrolní výrazy (viz téma Použití kontrolních výrazů).
Jazyk Visual C++ podporuje tři druhy zpracování výjimek:
zpracovávání výjimek v jazyce C++
Ve většině aplikací jazyka C++ by mělo být použito zpracování výjimek jazyka C++, které je typově bezpečné a zajišťuje, že jsou v průběhu odvíjení zásobníku vyvolány destruktory objektu.
Strukturované zpracování výjimek
Systém Windows nabízí svůj vlastní mechanismus zpracování výjimek zvaný SEH.Jeho použití není vhodné pro programování v jazyce C++ ani při použití knihovny MFC.SEH lze použít pouze v aplikacích jazyka C, které nepoužívají knihovnu MFC.
-
Od verze 3.0 používá MFC výjimky jazyka C++, ale stále podporuje jeho starší makra pro zpracování výjimek, jejichž forma se podobá výjimkám jazyka C++.Přestože nejsou tato makra vhodná pro nové programování, jsou z důvodu zpětné kompatibility stále podporována.V aplikacích používajících makra lze volně používat i výjimky jazyka C++.Během předběžného zpracování provádějí makra vyhodnocování na základě klíčových slov zpracování výjimek definovaných v implementaci Visual C++ jazyka C++ stejně jako u Visual C++ verze 2.0.Stávající makra zpracování výjimek lze při použití výjimek jazyka C++ ponechat.
Pro určení typu zpracování výjimek, který má být použit v rámci projektu, lze použít možnost kompilátoru /EH. Výchozí je zpracování výjimek jazyka C++.Nemíchat chyba zpracování mechanismy; Například nepoužívejte výjimky C++ s strukturovaného zpracování výjimek.Použití zpracování výjimek C++ způsobí, že váš kód obecnější a umožňuje zpracovávat výjimky jakéhokoli typu.Další informace o nevýhody strukturovaného zpracování výjimek, naleznete v části strukturovaného zpracování výjimek.Nápovědu o kombinování maker MFC a výjimek jazyka C++ naleznete v tématu Výjimky: Použití maker MFC a výjimek jazyka C++.
Informace o zpracování výjimek v aplikacích CLR naleznete v tématu Zpracování výjimek (rozšíření komponent C++).
Informace o zpracování výjimek na procesorech architektury x64 naleznete v tématu Zpracovávání výjimek (x64).