Sdílet prostřednictvím


CException::Delete

Tato funkce zkontroluje, zda CException objekt byl vytvořen na haldy a pokud ano, volání Odstranit operátor na objekt.

void Delete( );

Poznámky

Při odstraňování CException objekt, použijte Odstranit členské funkce odstranit výjimku.Nepoužívejte Odstranit operátor přímo, protože CException objektu může být globální objekt, nebo byly vytvořeny v zásobníku.

Můžete určit, zda objekt být odstraněn, když se objekt.Další informace naleznete v CException::CException.

Potřebujete volat Odstranit používáte C++ akci-úlovku mechanismu.Pokud používáte makra MFC akci a úlovku, pak tato makra budou automaticky volání této funkce.

Příklad

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;
}   

Požadavky

Záhlaví: afx.h

Viz také

Referenční dokumentace

Třída CException

Graf hierarchie