CFileException-Klasse

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:: errnodeexception Gibt den Code zurück, der einer Lauf Zeit Fehlernummer entspricht.
CFileException:: getErrorMessage Ruft die Meldung ab, in der eine Ausnahme beschrieben wird.
CFileException:: oserrordeexception Gibt einen Ursachen Code zurück, der dem Fehlercode des Betriebssystems entspricht.
CFileException:: throwerrno Löst eine Datei Ausnahme basierend auf einer Lauf Zeit Fehlernummer aus.
CFileException:: throwoserror Löst eine Datei Ausnahme basierend auf einer Betriebssystem-Fehlernummer aus.

Öffentliche Datenmember

Name Beschreibung
CFileException:: m_cause Enthält portablen Code, der der Ausnahme Ursache entspricht.
CFileException:: m_lOsError Enthält die zugehörige Betriebssystem-Fehlernummer.
CFileException:: m_strFileName Enthält den Namen der Datei für diese Ausnahme.

Bemerkungen

Die CFileException -Klasse enthält öffentliche Datenmember, die den portablen Ursachen Code und die betriebssystemspezifische Fehlernummer enthalten. Die-Klasse stellt auch statische Member-Funktionen zum Auslösen von Datei Ausnahmen und zum Zurückgeben von Ursachen Codes für Betriebssystem Fehler und C-Laufzeitfehler bereit.

CFileException -Objekte werden in Element CFile Funktionen und in Element Funktionen abgeleiteter Klassen erstellt und ausgelöst. Sie können auf diese Objekte innerhalb des Gültigkeits Bereichs eines catch -Ausdrucks zugreifen. Verwenden Sie für die Portabilität nur den Ursachen Code, um den Grund für eine Ausnahme zu erhalten. Weitere Informationen zu Ausnahmen finden Sie im Artikel Ausnahmebehandlung (MFC).

Vererbungshierarchie

CObject

CException

CFileException

Anforderungen

Header: AFX. h

CFileException:: CFileException

Erstellt ein CFileException -Objekt, das den Ursachen Code und den Betriebssystem Code im-Objekt speichert.

CFileException(
    int cause = CFileException::none,
    LONG lOsError = -1,
    LPCTSTR lpszArchiveName = NULL);

Parameter

cause
Eine enumerierte Typvariable, die den Grund für die Ausnahme angibt. Eine Liste der möglichen Werte finden Sie unter CFileException:: m_cause .

loserror
Ein Betriebssystem spezifischer Grund für die Ausnahme, falls verfügbar. Der loserror -Parameter bietet mehr Informationen als Ursache .

lpszarchivename
Verweist auf eine Zeichenfolge, die den Namen des Objekts enthält, CFile das die Ausnahme verursacht hat.

Bemerkungen

Verwenden Sie diesen Konstruktor nicht direkt, sondern nennen Sie stattdessen die globale Funktion afxthrowfileexception.

Hinweis

Die Variable loserror gilt nur für CFile -und- CStdioFile Objekte. CMemFileDieser Fehlercode wird von der-Klasse nicht behandelt.

CFileException:: errnodeexception

Konvertiert einen angegebenen Lauf Zeit Bibliotheks-Fehlerwert in einen CFileException enumerationsfehlerwert.

static int PASCAL ErrnoToException(int nErrno);

Parameter

nrno
Ein ganzzahliger Fehlercode, der in der Laufzeit-Datei "errno. H" definiert ist.

Rückgabewert

Enumerationswert, der einem angegebenen Lauf Zeit Bibliotheks-Fehlerwert entspricht.

Bemerkungen

Eine Liste der möglichen Enumerationswerte finden Sie unter CFileException:: m_cause .

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] Zeiger auf einen Puffer, der eine Fehlermeldung empfängt.

nMaxError
in Die maximale Anzahl von Zeichen, die im angegebenen Puffer enthalten sein können. Dies schließt das abschließende Null-Zeichen ein.

pnHelpContext
[in, out] Zeiger auf eine Ganzzahl ohne Vorzeichen, die die Hilfe Kontext-ID empfängt. Wenn NULL , wird keine ID zurückgegeben.

Rückgabewert

TRUE, wenn die Methode erfolgreich war. andernfalls false.

Bemerkungen

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;

Bemerkungen

Dieser Datenmember ist eine öffentliche Variable vom Typ int . Die Enumeratoren und ihre Bedeutungen lauten wie folgt:

Error Wert und Bedeutung
CFileException::none 0: 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 vollständig oder ein 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 Datei Handle zu verwenden.
CFileException::removeCurrentDir 7: das aktuelle Arbeitsverzeichnis kann nicht entfernt werden.
CFileException::directoryFull 8: Es sind keine weiteren Verzeichniseinträge vorhanden.
CFileException::badSeek 9: beim Versuch, den Dateizeiger festzulegen, ist ein Fehler aufgetreten.
CFileException::hardIO 10: Hardwarefehler.
CFileException::sharingViolation 11: SHARE.EXE wurde nicht geladen, oder ein frei gegebener Bereich wurde gesperrt.
CFileException::lockViolation 12: Es wurde versucht, einen Bereich zu sperren, der bereits gesperrt war.
CFileException::diskFull 13: der Datenträger ist voll.
CFileException::endOfFile 14: das Dateiende wurde erreicht.

Hinweis

Diese CFileException-Ursachenenumeratoren unterscheiden sich von den CArchiveException-Ursachenenumeratoren.

Hinweis

CArchiveException::generic ist veraltet. Verwenden Sie stattdessen genericException. Wenn generisch in einer Anwendung verwendet und mit/CLR erstellt wird, können die resultierenden Syntax Fehler nicht leicht entschlüsselt werden.

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 Fehlercode des Betriebssystems für diese Ausnahme.

LONG m_lOsError;

Bemerkungen

Eine Liste der Fehlercodes finden Sie in der technischen Anleitung Ihres Betriebssystems. Dieser Datenmember ist eine öffentliche Variable vom Typ Long.

CFileException:: m_strFileName

Enthält den Namen der Datei für diese Ausnahme Bedingung.

CString m_strFileName;

CFileException:: oserrordeexception

Gibt einen Enumerator zurück, der einem angegebenen loserror -Wert entspricht. Wenn der Fehlercode unbekannt ist, gibt die Funktion zurück CFileException::generic .

static int PASCAL OsErrorToException(LONG lOsError);

Parameter

loserror
Ein Betriebssystem spezifischer Fehlercode.

Rückgabewert

Enumerationswert, der einem angegebenen Betriebssystem-Fehlerwert entspricht.

Beispiel

ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) == 
   CFileException::accessDenied);

CFileException:: throwerrno

Erstellt ein- CFileException Objekt, das einem angegebenen nerrno -Wert entspricht, und löst dann die Ausnahme aus.

static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);

Parameter

nrno
Ein ganzzahliger Fehlercode, der in der Laufzeit-Datei "errno. H" definiert ist.

lpszfilename
Ein Zeiger auf die Zeichenfolge, die den Namen der Datei enthält, die die Ausnahme verursacht hat, sofern verfügbar.

Beispiel

CFileException::ThrowErrno(EACCES);  // "access denied"

CFileException:: throwoserror

Löst eine aus CFileException , die einem angegebenen loserror -Wert entspricht. Wenn der Fehlercode unbekannt ist, löst die Funktion eine Ausnahme aus, die als codiert ist CFileException::generic .

static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);

Parameter

loserror
Ein Betriebssystem spezifischer Fehlercode.

lpszfilename
Ein Zeiger auf die Zeichenfolge, die den Namen der Datei enthält, die die Ausnahme verursacht hat, sofern verfügbar.

Beispiel

CFileException::ThrowOsError(ERROR_ACCESS_DENIED);  // "access denied"         

Siehe auch

CException-Klasse
Hierarchie Diagramm
Ausnahme Verarbeitung