Freigeben über


CException::Delete

Die dieses Funktionsüberprüfungen, zu überprüfen, ob das Objekt CException auf dem Heap erstellt wurde und wenn ja, ruft er den delete-Operator für das Objekt auf.

void Delete( );

Hinweise

Wenn Sie ein CException -Objekt löschen, verwenden Sie die Löschen-Memberfunktion, die Ausnahme zu löschen. Verwenden Sie nicht den delete-Operator direkt, da das CException-Objekt möglicherweise ein globales Objekt sein oder auf dem Stapel erstellt.

Sie können angeben, ob das Objekt gelöscht werden soll, wenn das Objekt erstellt wird. Weitere Informationen finden Sie unter CException::CException.

Sie müssen nur Löschen aufrufen, wenn Sie C++ try-catch Mechanismus verwenden. Wenn Sie die MFC-Makros TRY und CATCH verwenden, dann rufen diese Makros automatisch diese Funktion auf.

Beispiel

CFile* pFile = NULL;

// Constructing a CFile object with this override may throw 
// a CFile exception, and won't throw any other exceptions. 
// Calling CString::Format() may throw a CMemoryException, 
// so we have a catch block for such exceptions, too. Any 
// other exception types this function throws will be 
// routed to the calling function. 

// Note that this example performs the same actions as the  
// example for CATCH, but uses C++ try/catch syntax instead 
// of using the MFC TRY/CATCH macros. This sample must use 
// CException::Delete() to delete the exception objects 
// before closing the catch block, while the CATCH example 
// implicitly performs the deletion via the macros. 

try
{
   pFile = new CFile(_T("C:\\WINDOWS\\SYSTEM.INI"),
      CFile::modeRead | CFile::shareDenyNone);

   ULONGLONG ullLength = pFile->GetLength();

   CString str;
   str.Format(_T("Your SYSTEM.INI file is %u bytes long."), ullLength);

   AfxMessageBox(str);
}
catch(CFileException* pEx)
{
   // Simply show an error message to the user.

   pEx->ReportError();
   pEx->Delete();
}
catch(CMemoryException* pEx)
{
   // We can't recover from this memory exception, so we'll 
   // just terminate the app without any cleanup. Normally, an 
   // an application should do everything it possibly can to 
   // clean up properly and _not_ call AfxAbort().

   pEx->Delete();
   AfxAbort();
}

// If an exception occurrs in the CFile constructor, 
// the language will free the memory allocated by new 
// and will not complete the assignment to pFile. 
// Thus, our clean-up code needs to test for NULL. 

if (pFile != NULL)
{
   pFile->Close();
   delete pFile;
}   

Anforderungen

Header: afx.h

Siehe auch

Referenz

CException-Klasse

Hierarchiediagramm