Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Stellt eine dateibezogene Ausnahmebedingung dar.
Syntax
class CFileException : public CException
Member
Öffentliche Konstruktoren
| Name | Beschreibung |
|---|---|
CFileException::CFileException |
Erstellt ein CFileException-Objekt. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
CFileException::ErrnoToException |
Gibt den Code zurück, der einer Laufzeitfehlernummer entspricht. |
CFileException::GetErrorMessage |
Ruft die Nachricht ab, die eine Ausnahme beschreibt. |
CFileException::OsErrorToException |
Gibt einen Ursachecode zurück, der einem Fehlercode des Betriebssystems entspricht. |
CFileException::ThrowErrno |
Löst eine Datei exception basierend auf einer Laufzeitfehlernummer aus. |
CFileException::ThrowOsError |
Löst eine Datei exception basierend auf einer Fehlernummer des Betriebssystems aus. |
Öffentliche Datenmember
| Name | Beschreibung |
|---|---|
CFileException::m_cause |
Enthält portablen Code, der der Ausnahmeursache entspricht. |
CFileException::m_lOsError |
Enthält die zugehörige Fehlernummer des Betriebssystems. |
CFileException::m_strFileName |
Enthält den Namen der Datei für diese Ausnahme. |
Hinweise
Die CFileException Klasse enthält öffentliche Datenmmber, die den portierbaren Ursachencode und die betriebssystemspezifische Fehlernummer enthalten. Die Klasse bietet außerdem statische Memberfunktionen zum Auslösen von Datei exceptions und zum Zurückgeben von Ursachencodes für Betriebssystemfehler und C-Laufzeitfehler.
CFileException Objekte werden in CFile Memberfunktionen und in Memberfunktionen abgeleiteter Klassen erstellt und ausgelöst. Sie können auf diese Objekte innerhalb des Bereichs eines CATCH Ausdrucks zugreifen. Verwenden Sie für die Portabilität nur den Ursachencode, um den Grund für eine Ausnahme abzurufen. Weitere Informationen zu Ausnahmen finden Sie im Artikel "Exception Handling (MFC)".
Vererbungshierarchie
CFileException
Anforderungen
Header: afx.h
CFileException::CFileException
Erstellt ein CFileException Objekt, das den Ursachecode und den Betriebssystemcode im Objekt speichert.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parameter
cause
Eine Aufzählungstypvariable, die den Grund für die Ausnahme angibt. Eine Liste der möglichen Werte finden Sie unter.See CFileException::m_cause for a list of the possible values.
lOsError
Ein betriebssystemspezifischer Grund für die Ausnahme, falls verfügbar. Der lOsError Parameter stellt mehr Informationen bereit, als cause dies der Fall ist.
lpszArchiveName
Verweist auf eine Zeichenfolge, die den Namen des CFile Objekts enthält, das die Ausnahme verursacht.
Hinweise
Verwenden Sie diesen Konstruktor nicht direkt, sondern rufen Sie stattdessen die globale Funktion AfxThrowFileExceptionauf.
Hinweis
Die Variable lOsError gilt nur für CFile und CStdioFile Objekte. Die CMemFile Klasse behandelt diesen Fehlercode nicht.
CFileException::ErrnoToException
Wandelt einen bestimmten Laufzeitbibliotheksfehlerwert in einen CFileException aufgezählten Fehlerwert um.
static int PASCAL ErrnoToException(int nErrno);
Parameter
nErrno
Ein ganzzahliger Fehlercode, der in der Laufzeit definiert ist, enthält die Datei ERRNO.H.
Rückgabewert
Aufzählungswert, der einem bestimmten Laufzeitbibliotheksfehlerwert entspricht.
Hinweise
Eine Liste der möglichen Aufzählungswerte finden Sie CFileException::m_cause unter.
Beispiel
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Ruft Text ab, der eine Ausnahme beschreibt.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parameter
lpszError
[in, out] Zeigen Sie auf einen Puffer, der eine Fehlermeldung empfängt.
nMaxError
[in] Die maximale Anzahl von Zeichen, die der angegebene Puffer enthalten kann. Dies schließt das Endzeichen NULL ein.
pnHelpContext
[in, out] Zeigen Sie auf eine nicht signierte ganze Zahl, die die Hilfekontext-ID empfängt. Wenn NULL, wird keine ID zurückgegeben.
Rückgabewert
TRUE wenn die Methode erfolgreich war; andernfalls FALSE.
Hinweise
Wenn der angegebene Puffer zu klein ist, wird die Fehlermeldung abgeschnitten.
Beispiel
Im folgenden Beispiel wird CFileException::GetErrorMessage verwendet.
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
Enthält Werte, die von einem CFileException-Enumerationstyp definiert wurden.
int m_cause;
Hinweise
Dieses Datenelement ist eine öffentliche Variable vom Typ int. Die Enumeratoren und ihre Bedeutungen lauten wie folgt:
| Fehler | Wert und Bedeutung |
|---|---|
CFileException::none |
0: Es ist kein Fehler aufgetreten. |
CFileException::genericException |
1: Ein nicht angegebener Fehler ist aufgetreten. |
CFileException::fileNotFound |
2: Die Datei konnte nicht gefunden werden. |
CFileException::badPath |
3: Der Gesamte oder Teil des Pfads ist ungültig. |
CFileException::tooManyOpenFiles |
4: Die zulässige Anzahl geöffneter Dateien wurde überschritten. |
CFileException::accessDenied |
5: Auf die Datei konnte nicht zugegriffen werden. |
CFileException::invalidFile |
6: Es wurde versucht, ein ungültiges Dateihandle zu verwenden. |
CFileException::removeCurrentDir |
7: Das aktuelle Arbeitsverzeichnis kann nicht entfernt werden. |
CFileException::directoryFull |
8: Es gibt keine weiteren Verzeichniseinträge. |
CFileException::badSeek |
9: Fehler beim Festlegen des Dateizeigers. |
CFileException::hardIO |
10: Hardwarefehler. |
CFileException::sharingViolation |
11: SHARE.EXE wurde nicht geladen, oder eine freigegebene Region wurde gesperrt. |
CFileException::lockViolation |
12: Es wurde versucht, eine bereits gesperrte Region zu sperren. |
CFileException::diskFull |
13: Der Datenträger ist voll. |
CFileException::endOfFile |
14: Das Ende der Datei wurde erreicht. |
Hinweis
Diese CFileException-Ursachenenumeratoren unterscheiden sich von den CArchiveException-Ursachenenumeratoren.
Hinweis
CArchiveException::generic ist veraltet. Verwenden Sie stattdessen genericException. Wenn generic sie in einer Anwendung verwendet und mit /clrdieser erstellt wird, sind die resultierenden Syntaxfehler nicht leicht zu entschlüsseln.
Beispiel
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
Enthält den Betriebssystemfehlercode für diese Ausnahme.
LONG m_lOsError;
Hinweise
Eine Liste der Fehlercodes finden Sie im technischen Handbuch des Betriebssystems. Dieses Datenelement ist eine öffentliche Variable vom Typ LONG.
CFileException::m_strFileName
Enthält den Namen der Datei für diese Ausnahmebedingung.
CString m_strFileName;
CFileException::OsErrorToException
Gibt einen Enumerator zurück, der einem bestimmten lOsError Wert entspricht. Wenn der Fehlercode unbekannt ist, wird die Funktion zurückgegeben CFileException::generic.
static int PASCAL OsErrorToException(LONG lOsError);
Parameter
lOsError
Ein betriebssystemspezifischer Fehlercode.
Rückgabewert
Aufzählungswert, der einem bestimmten Betriebssystemfehlerwert entspricht.
Beispiel
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Erstellt ein CFileException Objekt, das einem bestimmten nErrno Wert entspricht, und löst dann die Ausnahme aus.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parameter
nErrno
Ein ganzzahliger Fehlercode, der in der Laufzeit definiert ist, enthält die Datei ERRNO.H.
lpszFileName
Ein Zeiger auf die Zeichenfolge, die den Namen der Datei enthält, die die Ausnahme verursacht hat, falls verfügbar.
Beispiel
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Löst einen CFileException entsprechenden Wert aus lOsError . Wenn der Fehlercode unbekannt ist, löst die Funktion eine Ausnahme aus, die als CFileException::generic.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parameter
lOsError
Ein betriebssystemspezifischer Fehlercode.
lpszFileName
Ein Zeiger auf die Zeichenfolge, die den Namen der Datei enthält, die die Ausnahme verursacht hat, falls verfügbar.
Beispiel
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"