Sdílet prostřednictvím


Zpracování výjimek v prostředí MFC

Tento článek vysvětluje mechanismus zpracování výjimek, které jsou k dispozici v knihovně MFC.K dispozici jsou dva mechanismy:

  • Výjimky C++ k dispozici v MFC verze 3.0 a novější

  • MFC makra výjimka k dispozici v MFC verze 1.0 a vyšší

Pokud píšete novou aplikaci knihovny MFC, měli byste použít mechanismus C++.Můžete makro na základě mechanismu aplikace již široce používá tento mechanismus.

Snadno lze převést existující kód pro použití výjimky C++ namísto výjimky maker knihovny MFC.V článku jsou popsány výhody převodu kód a pokyny pro to Výjimky: Převádění z maker výjimek prostředí MFC.

Pokud jste již vytvořili aplikaci pomocí maker knihovny MFC výjimky, můžete pokračovat v použití těchto maker v existujícím kódu, při použití výjimky C++ nový kód.V článku Výjimky: Změny maker pro výjimky ve verzi 3.0 dává pokyny pro to.

[!POZNÁMKA]

Ve svém kódu pro zpracování výjimek C++ povolit, zaškrtněte povolit výjimky C++ na stránce generování kódu ve složce C/C++ projektu Stránky vlastností (Visual C++) dialogové okno, nebo použít možnost kompilátoru /GX.Výchozí hodnota je /GX–, který zakazuje zpracování výjimek.

Tento článek obsahuje následující témata:

  • Použití výjimky

  • Výjimka podpory knihovny MFC

  • Další čtení o výjimkách

Použití výjimky

Tři kategorie výsledky může dojít, pokud je volána funkce při provádění programu: Normální spuštění, spuštění chybné nebo abnormální spuštění.Každá kategorie je popsána níže.

  • Normální spuštění.

    Funkce může spustit normálně a vrátit.Některé funkce kód výsledku vrátit volajícímu, který označuje výsledek funkce.Kódy z výsledků jsou přesně definovány funkce a rozsah možných výsledků funkce představují.Kód výsledku lze označuje úspěch nebo neúspěch nebo dokonce můžete určit konkrétní typ selhání, které je v rámci normální očekávání.Funkce stav souboru může například vrátit kód, který označuje, že soubor neexistuje.Všimněte si, že termín "kód chyby" není použita, protože kód výsledku představuje jednu z mnoha očekávaných výsledků.

  • Chybné provedení

    Volající provádí některé chyby v předávání argumentů do funkce nebo zavolá funkci v kontextu nevhodné.Tato situace způsobuje chybu a zjišťovaných uvedením nepravdivých během vývoje aplikace. (Další informace o tvrzení, viz Kontrolní výrazy jazyka C/C++.)

  • Neobvyklé provedení

    Neobvyklé provedení zahrnuje situace, kde jsou podmínky vně ovládacího prvku programu, jako je nedostatek paměti nebo vstupně-výstupní chyby ovlivňující výsledek funkce.Neobvyklých situací má být zpracována lov a vyvolání výjimky.

Použití výjimky je zvláště vhodné pro abnormální spuštění.

Výjimka podpory knihovny MFC

Zda použít výjimky C++ přímo nebo pomocí maker knihovny MFC výjimka, použijte Třída CException nebo CException-odvozené objekty, které mohou být vyvolány v rámci nebo aplikace.

Následující tabulka zobrazuje předdefinované výjimky poskytnuté knihovnou MFC.

Třída výjimek

Význam

Třída CMemoryException

Z důvodu nedostatku paměti

Třída CFileException

Soubor výjimek

Třída CArchiveException

Archiv/serializace výjimku.

Třída CNotSupportedException

Odpověď na požadavek služby není podporován

Třída CResourceException

Výjimka přidělení prostředků systému Windows

Třída CDaoException

Vyjímky databáze (třídy rozhraní DAO)

Třída CDBException

Vyjímky databáze (třídy rozhraní ODBC)

Třída COleException

Výjimky OLE

Třída COleDispatchException

Výjimky dispatch (Automatizace)

Třída CUserException

Výjimka, která upozorní uživatele se okno se zprávou a potom vyvolá obecnouTřída CException

[!POZNÁMKA]

MFC podporuje výjimky C++ a MFC makra výjimku.MFC přímo nepodporuje Windows NT strukturované obslužné rutiny výjimek (SEH), jak je popsáno v Strukturované zpracování výjimek.

Další čtení o výjimkách

Následující články popisují použití knihovny MFC pro předávání výjimek:

V následujících článcích porovnat výjimky maker knihovny MFC s klíčovými slovy výjimky C++ a popisují, jak lze přizpůsobit váš kód:

Viz také

Referenční dokumentace

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

Další zdroje

Jak vytvořit i vlastní třídy vlastní výjimky?