Výjimky: Zachycení a odstranění výjimky
Následující pokyny a příklady ukazují, jak zjistit a odstranit výjimky.Další informace o akci, úlovku, a throw klíčová slova, viz Zpracování výjimek C++.
V popisovačích výjimek musíte odstranit výjimku objekty, které mohou zpracovat, protože selhání odstranit výjimku způsobuje nevracení paměti při každém kód výjimku zachytí.
Vaše úlovku blok, musíte odstranit výjimku při:
Úlovku bloku novou výjimku.
Pokud vyvolávají stejné výjimku znovu samozřejmě třeba odstranit není výjimka:
catch(CException* e) { if (m_bThrowExceptionAgain) throw; // Do not delete e else e->Delete(); }
Spuštění vrací v rámci úlovku bloku.
[!POZNÁMKA]
Při odstraňování CException, použít Odstranit členské funkce odstranit výjimku.Nepoužívejte Odstranit klíčové slovo, protože může selhat, pokud není výjimkou na haldy.
Zachycení a odstranění výjimky
Použití akci klíčového slova pro nastavení akci bloku.Spustit libovolný program příkazy, které může vyvolat výjimku v akci bloku.
Použití úlovku klíčového slova pro nastavení úlovku bloku.Umístit kód zpracování výjimek v úlovku bloku.Kód v úlovku bloku je spouštěn pouze v případě kódu v akci bloku výjimku typu určeného v úlovku prohlášení.
Následující obalu s kostlivcem jak akci a úlovku bloky jsou obvykle uspořádány:
try { // Execute some code that might throw an exception. AfxThrowUserException(); } catch( CException* e ) { // Handle the exception here. // "e" contains information about the exception. e->Delete(); }
Když je vyvolána výjimka, řízení předá první úlovku blok, jehož výjimku prohlášení odpovídá typu výjimky.Selektivně lze zpracovávat různé typy výjimky pro sekvenční úlovku blokuje níže uvedené:
try { // Execute some code that might throw an exception. AfxThrowUserException(); } catch( CMemoryException* e ) { // Handle the out-of-memory exception here. e->Delete(); } catch( CFileException* e ) { // Handle the file exceptions here. e->Delete(); } catch( CException* e ) { // Handle all other types of exceptions here. e->Delete(); }
Další informace naleznete v výjimky: převod z makra MFC výjimku.