Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje mechanismy zpracování výjimek dostupné v prostředí MFC. K dispozici jsou dva mechanismy:
Výjimky jazyka C++, dostupné v prostředí MFC verze 3.0 a novější
Makra výjimek MFC, která jsou k dispozici ve verzích MFC 1.0 a novějších
Pokud píšete novou aplikaci pomocí knihovny MFC, měli byste použít mechanismus jazyka C++. Mechanismus založený na makrech můžete použít, pokud už vaše stávající aplikace tento mechanismus používá výrazně.
Existující kód můžete snadno převést tak, aby místo maker výjimek MFC používal výjimky jazyka C++. Výhody převodu vašeho kódu a pokyny, jak na to, jsou popsány v článku Výjimky: Převod z maker výjimek MFC.
Pokud jste již vytvořili aplikaci pomocí maker výjimek MFC, můžete tato makra dál používat ve stávajícím kódu a současně v novém kódu používat výjimky jazyka C++. Článek Výjimky: Změny maker výjimek ve verzi 3.0 poskytují pokyny k tomu.
Poznámka:
Pokud chcete povolit zpracování výjimek jazyka C++v kódu, vyberte povolit výjimky jazyka C++ na stránce Generování kódu ve složce C/C++ dialogového okna Stránky vlastností projektu nebo použijte možnost kompilátoru /EHsc .
Tento článek se zabývá následujícími tématy:
Kdy použít výjimky
K třem kategoriím výsledků může dojít, když je funkce volána během provádění programu: normální spuštění, chybné spuštění nebo neobvyklé spuštění. Jednotlivé kategorie jsou popsány níže.
Normální spuštění
Funkce se může spouštět normálně a vracet. Některé funkce vrátí volajícímu kód výsledku, který označuje výsledek funkce. Možné kódy výsledků jsou přísně definovány pro funkci a představují rozsah možných výsledků funkce. Kód výsledku může indikovat úspěch nebo selhání nebo dokonce může indikovat konkrétní typ selhání, který je v normálním rozsahu očekávání. Například funkce stavu souboru může vrátit kód, který označuje, že soubor neexistuje. Všimněte si, že výraz "kód chyby" se nepoužívá, protože kód výsledku představuje jeden z mnoha očekávaných výsledků.
Chybné provádění
Volající dělá chybu při předávání argumentů funkci nebo volá funkci v nevhodném kontextu. Tato situace způsobí chybu a měla by být odhalena asercí během vývoje programu. Další informace o kontrolních výrazech naleznete v tématu C/C++ Kontrolní výrazy.
Neobvyklé provedení
Neobvyklé spouštění zahrnuje situace, kdy podmínky mimo kontrolu programu, jako jsou chyby nedostatku paměti nebo vstupně-výstupních operací, ovlivňují výsledek funkce. Neobvyklé situace by se měly zpracovat zachycením a vyvoláním výjimek.
Použití výjimek je obzvláště vhodné pro neobvyklé provádění.
Podpora výjimek MFC
Bez ohledu na to, zda použijete výjimky jazyka C++ přímo nebo použijete makra výjimek MFC, použijete třídu CException nebo CExceptionodvozené objekty, které mohou být vyvolány architekturou nebo vaší aplikací.
Následující tabulka uvádí předdefinované výjimky poskytované prostředím MFC.
| Třída výjimka | Význam |
|---|---|
| Třída CMemoryException | Nedostatek paměti |
| Třída CFileException | Výjimka při práci se souborem |
| třída CArchiveException | Výjimka archivace/serializace |
| Třída CNotSupportedException | Odpověď na žádost o nepodporovanou službu |
| Třída CResourceException | Výjimka přidělení prostředků Systému Windows |
| Třída CDaoException | Výjimky databáze (třídy DAO) |
| Třída CDBException | Výjimky databáze (třídy ODBC) |
| COleException třída | Výjimky OLE |
| Třída COleDispatchException | Výjimky dispatch (automatizace) |
| Třída CUserException | Výjimka, která uživatele upozorní na pole se zprávou a pak vyvolá obecnou třídu CException |
Od verze 3.0 používá mfc výjimky jazyka C++, ale stále podporuje starší makra zpracování výjimek, která jsou podobná výjimkám jazyka C++ve formě. I když se tato makra nedoporučují pro nové programování, jsou stále podporována kvůli zpětné kompatibilitě. V programech, které už makra používají, můžete volně používat i výjimky jazyka C++. Během předzpracování se makra vyhodnotí na klíčová slova pro zpracování výjimek definovaná v implementaci jazyka C++ v MSVC verzi Visual C++ 2.0. Existující makra výjimek můžete ponechat na místě, když začnete používat výjimky jazyka C++. Informace o kombinování maker a zpracování výjimek jazyka C++ a o převodu starého kódu na použití nového mechanismu naleznete v článcích Výjimky: Použití maker MFC a výjimek jazyka C++ a Výjimky: Převod z maker výjimek MFC. Starší makra výjimek MFC, pokud je stále používáte, se vyhodnotí jako klíčová slova výjimek jazyka C++. Viz Výjimky: změny makra výjimek ve verzi 3.0. MFC přímo nepodporuje obslužné rutiny strukturovaných výjimek systému Windows NT (SEH), jak je popsáno ve strukturovaném zpracování výjimek.
Další informace o výjimkách
Následující články vysvětlují použití knihovny MFC pro zpracování výjimek:
Následující články porovnávají makra výjimek MFC s klíčovými slovy výjimek jazyka C++ a vysvětlují, jak můžete přizpůsobit kód:
Viz také
Moderní osvědčené postupy jazyka C++ pro výjimky a zpracování chyb