Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Classe
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 AfxThrowFileExceptionglobale .
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.Hdi 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.Hdi 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