Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
In de volgende instructies en voorbeelden ziet u hoe u uitzonderingen kunt ondervangen en verwijderen. Voor meer informatie over de try, catch, en throw trefwoorden, zie de best practices voor moderne C++ voor uitzonderingen en foutafhandeling.
Uw uitzonderingshandlers moeten uitzonderingsobjecten verwijderen die ze verwerken, omdat het verwijderen van de uitzondering een geheugenlek veroorzaakt wanneer die code een uitzondering onderschept.
Uw catch blok moet een uitzondering verwijderen wanneer:
Het
catchblok genereert een nieuwe uitzondering.Natuurlijk moet u de uitzondering niet verwijderen als u dezelfde uitzondering opnieuw genereert:
catch (CException* e) { if (m_bThrowExceptionAgain) throw; // Do not delete e else e->Delete(); }Uitvoering wordt geretourneerd vanuit het
catchblok.
Opmerking
Wanneer u een CExceptionuitzondering verwijdert, gebruikt u de Delete lidfunctie om de uitzondering te verwijderen. Gebruik het delete trefwoord niet, omdat het kan mislukken als de uitzondering zich niet op de heap bevindt.
Uitzonderingen vangen en verwijderen
Gebruik het
trytrefwoord om eentryblok in te stellen. Voer alle programma-instructies uit die een uitzondering binnen eentryblok kunnen genereren.Gebruik het
catchtrefwoord om eencatchblok in te stellen. Plaats uitzonderingsafhandelingscode in eencatchblok. De code in hetcatchblok wordt alleen uitgevoerd als de code in hettryblok een uitzondering genereert van het type dat is opgegeven in decatchinstructie.In het volgende skelet ziet u hoe
tryencatchblokken normaal worden gerangschikt: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(); }Wanneer er een uitzondering wordt gegenereerd, wordt het besturingselement doorgegeven aan het eerste
catchblok waarvan de uitzonderingsdeclaratie overeenkomt met het type uitzondering. U kunt selectief verschillende soorten uitzonderingen verwerken met sequentiëlecatchblokken, zoals hieronder wordt vermeld: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(); }
Zie Uitzonderingen: Converteren van MFC-uitzonderingsmacro's voor meer informatie.