Eccezioni: esame del contenuto delle eccezioni
Anche se l'argomento di un catch
blocco può essere di quasi qualsiasi tipo di dati, le funzioni MFC generano eccezioni di tipi derivati dalla classe CException
. Per intercettare un'eccezione generata da una funzione MFC, quindi si scrive un catch
blocco il cui argomento è un puntatore a un CException
oggetto (o un oggetto derivato da CException
, ad esempio CMemoryException
). A seconda del tipo esatto dell'eccezione, è possibile esaminare i membri dati dell'oggetto eccezione per raccogliere informazioni sulla causa specifica dell'eccezione.
Ad esempio, il CFileException
tipo ha il m_cause
membro dati, che contiene un tipo enumerato che specifica la causa dell'eccezione di file. Alcuni esempi dei possibili valori restituiti sono CFileException::fileNotFound
e CFileException::readOnly
.
Nell'esempio seguente viene illustrato come esaminare il contenuto di un oggetto CFileException
. È possibile esaminare altri tipi di eccezione in modo analogo.
try
{
CFile file(_T("\\this_file_should_not_exist.dat"), CFile::modeRead);
}
catch (CFileException* theException)
{
if (theException->m_cause == CFileException::fileNotFound)
TRACE("File not found\n");
theException->Delete();
}
Per altre informazioni, vedere Eccezioni: Liberare oggetti in eccezioni ed eccezioni: rilevamento ed eliminazione di eccezioni.