CException::Delete
Ta funkcja sprawdza, czy CException obiekt został utworzony na stercie, a jeśli tak, wywołuje usunąć operator obiektu.
void Delete( );
Uwagi
Podczas usuwania CException obiektów, użyj usunąć Członkowskich funkcji usunąć wyjątek.Nie należy używać usunąć operatora bezpośrednio, ponieważ CException obiekt może być obiekt globalny lub zostały utworzone na stosie.
Aby określić, czy obiekt powinny zostać skreślone, gdy obiekt jest skonstruowany.Aby uzyskać więcej informacji, zobacz CException::CException.
Wystarczy zadzwonić usunąć , jeśli używasz C++ Spróbuj-połowu mechanizmu.Jeżeli używasz makra MFC SPRÓBUJ i połowu, a następnie te makra będą automatycznie wywołać tę funkcję.
Przykład
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;
}
Wymagania
Nagłówek: afx.h