Eccezioni: esame del contenuto delle eccezioni
Sebbene argomento di un blocco di Catch possa essere di qualsiasi tipo di dati, le funzioni MFC generano eccezioni dei tipi derivati dalla classe CException. Per intercettare un'eccezione generata da una funzione MFC, quindi, scrivere un blocco di Catch di cui l'argomento è un puntatore a un oggetto di CException (o a un oggetto derivato da CException, come CMemoryException). A seconda del tipo esatto di eccezione, è possibile esaminare i membri dati dell'oggetto eccezione per raccogliere informazioni sulla causa specifica dell'eccezione.
Ad esempio, il tipo di CFileException ha il membro dati di m_cause, che contiene un tipo enumerato che specifica la causa dell'eccezione di file. Alcuni esempi di restituire valori possibili sono CFileException::fileNotFound e CFileException::readOnly.
Nell'esempio seguente viene illustrato come esaminare il contenuto di CFileException. Altri tipi di eccezione possono essere esaminati nello stesso modo.
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 ulteriori informazioni, vedere Eccezioni: Versione degli oggetti delle eccezioni e Eccezioni: Rilevazione e l'eliminazione delle eccezioni.