Classe CFileException
Rappresenta una condizione di eccezione correlata al file.
Sintassi
class CFileException : public CException
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CFileException::CFileException |
Costruisce un oggetto CFileException . |
Metodi pubblici
Nome | Descrizione |
---|---|
CFileException::ErrnoToException |
Restituisce il codice di causa corrispondente a un numero di errore di run-time. |
CFileException::GetErrorMessage |
Recupera il messaggio che descrive un'eccezione. |
CFileException::OsErrorToException |
Restituisce un codice di causa corrispondente a un codice di errore del sistema operativo. |
CFileException::ThrowErrno |
Genera un'eccezione di file in base a un numero di errore di runtime. |
CFileException::ThrowOsError |
Genera un'eccezione di file in base a un numero di errore del sistema operativo. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CFileException::m_cause |
Contiene codice portabile corrispondente alla causa dell'eccezione. |
CFileException::m_lOsError |
Contiene il numero di errore del sistema operativo correlato. |
CFileException::m_strFileName |
Contiene il nome del file per questa eccezione. |
Osservazioni:
La CFileException
classe include membri dati pubblici che contengono il codice di causa portabile e il numero di errore specifico del sistema operativo. La classe fornisce anche funzioni membro statiche per generare eccezioni di file e per la restituzione di codici di causa sia per gli errori del sistema operativo che per gli errori di runtime C.
CFileException
gli oggetti vengono costruiti e generati nelle CFile
funzioni membro e nelle funzioni membro delle classi derivate. È possibile accedere a questi oggetti all'interno dell'ambito di un'espressione CATCH
. Per la portabilità, usare solo il codice di causa per ottenere il motivo di un'eccezione. Per altre informazioni sulle eccezioni, vedere l'articolo Gestione delle eccezioni (MFC).
Gerarchia di ereditarietà
CFileException
Requisiti
Intestazione: afx.h
CFileException::CFileException
Costruisce un CFileException
oggetto che archivia il codice della causa e il codice del sistema operativo nell'oggetto .
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parametri
cause
Variabile di tipo enumerato che indica il motivo dell'eccezione. Vedere CFileException::m_cause
per un elenco dei valori possibili.
lOsError
Motivo specifico del sistema operativo per l'eccezione, se disponibile. Il lOsError
parametro fornisce più informazioni di quanto cause
non lo sia.
lpszArchiveName
Punta a una stringa contenente il nome dell'oggetto CFile
che causa l'eccezione.
Osservazioni:
Non usare direttamente questo costruttore, ma chiamare la funzione AfxThrowFileException
globale .
Nota
La variabile lOsError
si applica solo agli CFile
oggetti e CStdioFile
. La CMemFile
classe non gestisce questo codice di errore.
CFileException::ErrnoToException
Converte un determinato valore di errore della libreria di runtime in un CFileException
valore di errore enumerato.
static int PASCAL ErrnoToException(int nErrno);
Parametri
nErrno
Codice di errore integer definito nel file ERRNO.H
di inclusione in fase di esecuzione.
Valore restituito
Valore enumerato che corrisponde a un determinato valore di errore della libreria di runtime.
Osservazioni:
Vedere CFileException::m_cause
per un elenco dei possibili valori enumerati.
Esempio
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Recupera il testo che descrive un'eccezione.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parametri
lpszError
[in, out] Puntatore a un buffer che riceve un messaggio di errore.
nMaxError
[in] Numero massimo di caratteri che il buffer specificato può contenere. Include il carattere di terminazione NULL
.
pnHelpContext
[in, out] Puntatore a un intero senza segno che riceve l'ID contesto della Guida. Se NULL
, non viene restituito alcun ID.
Valore restituito
TRUE
se il metodo ha avuto esito positivo; in caso contrario FALSE
, .
Osservazioni:
Se il buffer specificato è troppo piccolo, il messaggio di errore viene troncato.
Esempio
Nell'esempio seguente viene utilizzato CFileException::GetErrorMessage
:
CFile fileInput;
CFileException ex;
// try to open a file for reading.
// The file will certainly not
// exist because there are too many explicit
// directories in the name.
// if the call to Open() fails, ex will be
// initialized with exception
// information. the call to ex.GetErrorMessage()
// will retrieve an appropriate message describing
// the error, and we'll add our own text
// to make sure the user is perfectly sure what
// went wrong.
if (!fileInput.Open(_T("\\Too\\Many\\Bad\\Dirs.DAT"), CFile::modeRead, &ex))
{
TCHAR szCause[255];
CString strFormatted;
ex.GetErrorMessage(szCause, 255);
// (in real life, it's probably more
// appropriate to read this from
// a string resource so it would be easy to
// localize)
strFormatted = _T("The data file could not be opened because of this error: ");
strFormatted += szCause;
AfxMessageBox(strFormatted);
}
else
{
// the file was opened, so do whatever work
// with fileInput
// we were planning...
fileInput.Close();
}
CFileException::m_cause
Contiene valori definiti da un tipo enumerato CFileException
.
int m_cause;
Osservazioni:
Questo membro dati è una variabile pubblica di tipo int
. Di seguito sono elencati gli enumeratori e i relativi significati:
Error | Valore e significato |
---|---|
CFileException::none |
0: Non si è verificato alcun errore. |
CFileException::genericException |
1: Si è verificato un errore non specificato. |
CFileException::fileNotFound |
2: Impossibile trovare il file. |
CFileException::badPath |
3: Tutto o parte del percorso non è valido. |
CFileException::tooManyOpenFiles |
4: è stato superato il numero consentito di file aperti. |
CFileException::accessDenied |
5: Impossibile accedere al file. |
CFileException::invalidFile |
6: Si è tentato di usare un handle di file non valido. |
CFileException::removeCurrentDir |
7: La directory di lavoro corrente non può essere rimossa. |
CFileException::directoryFull |
8: Non ci sono più voci di directory. |
CFileException::badSeek |
9: Si è verificato un errore durante il tentativo di impostare il puntatore al file. |
CFileException::hardIO |
10: Si è verificato un errore hardware. |
CFileException::sharingViolation |
11: SHARE.EXE non è stato caricato o un'area condivisa è stata bloccata. |
CFileException::lockViolation |
12: Si è tentato di bloccare un'area già bloccata. |
CFileException::diskFull |
13: Il disco è pieno. |
CFileException::endOfFile |
14: è stata raggiunta la fine del file. |
Nota
Questi enumeratori di causa CFileException
sono diversi dagli enumeratori di causa CArchiveException
.
Nota
CArchiveException::generic
è stato deprecato. Utilizzare invece genericException
. Se generic
viene usato in un'applicazione e compilato con /clr
, gli errori di sintassi risultanti non sono facili da decifrare.
Esempio
try
{
CFile f(_T("M_Cause_File.dat"), CFile::modeWrite);
}
catch(CFileException* e)
{
if( e->m_cause == CFileException::fileNotFound)
TRACE(_T("ERROR: File not found\n"));
e->Delete();
}
CFileException::m_lOsError
Contiene il codice di errore del sistema operativo per questa eccezione.
LONG m_lOsError;
Osservazioni:
Per un elenco dei codici di errore, vedere il manuale tecnico del sistema operativo. Questo membro dati è una variabile pubblica di tipo LONG
.
CFileException::m_strFileName
Contiene il nome del file per questa condizione di eccezione.
CString m_strFileName;
CFileException::OsErrorToException
Restituisce un enumeratore che corrisponde a un valore specificato lOsError
. Se il codice di errore è sconosciuto, la funzione restituisce CFileException::generic
.
static int PASCAL OsErrorToException(LONG lOsError);
Parametri
lOsError
Codice di errore specifico del sistema operativo.
Valore restituito
Valore enumerato che corrisponde a un determinato valore di errore del sistema operativo.
Esempio
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Costruisce un CFileException
oggetto corrispondente a un determinato nErrno
valore, quindi genera l'eccezione.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parametri
nErrno
Codice di errore integer definito nel file ERRNO.H
di inclusione in fase di esecuzione.
lpszFileName
Puntatore alla stringa contenente il nome del file che ha causato l'eccezione, se disponibile.
Esempio
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Genera un oggetto CFileException
corrispondente a un determinato lOsError
valore. Se il codice di errore è sconosciuto, la funzione genera un'eccezione codificata come CFileException::generic
.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parametri
lOsError
Codice di errore specifico del sistema operativo.
lpszFileName
Puntatore alla stringa contenente il nome del file che ha causato l'eccezione, se disponibile.
Esempio
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"
Vedi anche
CException
Classe
Grafico della gerarchia
Elaborazione delle eccezioni