Share via


CFileException-klasse

Opmerking

De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Vertegenwoordigt een uitzonderingsvoorwaarde met betrekking tot bestanden.

Syntaxis

class CFileException : public CException

Leden

Openbare constructors

Naam Description
CFileException::CFileException Maakt een CFileException object.

Openbare methoden

Naam Description
CFileException::ErrnoToException Retourneert code die overeenkomt met een runtimefoutnummer.
CFileException::GetErrorMessage Hiermee wordt het bericht opgehaald met een beschrijving van een uitzondering.
CFileException::OsErrorToException Retourneert een oorzaakcode die overeenkomt met een foutcode van het besturingssysteem.
CFileException::ThrowErrno Genereert een bestandsonderzondering op basis van een runtime-foutnummer.
CFileException::ThrowOsError Genereert een bestandsonderzondering op basis van een foutnummer van het besturingssysteem.

Leden van openbare gegevens

Naam Description
CFileException::m_cause Bevat draagbare code die overeenkomt met de oorzaak van de uitzondering.
CFileException::m_lOsError Bevat het bijbehorende foutnummer van het besturingssysteem.
CFileException::m_strFileName Bevat de naam van het bestand voor deze uitzondering.

Opmerkingen

De CFileException klasse bevat leden van openbare gegevens die de code voor draagbare oorzaak en het specifieke foutnummer van het besturingssysteem bevatten. De klasse biedt ook statische lidfuncties voor het genereren van bestandsonderzondering en voor het retourneren van oorzaakcodes voor zowel fouten van het besturingssysteem als C-runtimefouten.

CFileException objecten worden samengesteld en gegenereerd in CFile lidfuncties en in lidfuncties van afgeleide klassen. U kunt deze objecten openen binnen het bereik van een CATCH expressie. Gebruik voor portabiliteit alleen de oorzaakcode om de reden voor een uitzondering op te halen. Zie het artikel Exception Handling (MFC) voor meer informatie over uitzonderingen.

Overnamehiërarchie

CObject

CException

CFileException

Requirements

Rubriek:afx.h

CFileException::CFileException

Hiermee wordt een CFileException object gemaakt waarin de oorzaakcode en de code van het besturingssysteem in het object worden opgeslagen.

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

Parameterwaarden

cause
Een geïnventariseerd typevariabele die de reden voor de uitzondering aangeeft. Zie CFileException::m_cause voor een lijst met de mogelijke waarden.

lOsError
Een besturingssysteemspecifieke reden voor de uitzondering, indien beschikbaar. De lOsError parameter biedt meer informatie dan cause wel.

lpszArchiveName
Verwijst naar een tekenreeks met de naam van het CFile object die de uitzondering veroorzaakt.

Opmerkingen

Gebruik deze constructor niet rechtstreeks, maar roep de globale functie AfxThrowFileExceptionaan.

Opmerking

De variabele lOsError is alleen van CFile toepassing op en CStdioFile objecten. Deze foutcode wordt niet verwerkt door de CMemFile klasse.

CFileException::ErrnoToException

Converteert een bepaalde runtimebibliotheekfoutwaarde naar een CFileException opgesomde foutwaarde.

static int PASCAL ErrnoToException(int nErrno);

Parameterwaarden

nErrno
Een geheel getalfoutcode zoals gedefinieerd in het runtime-include-bestand ERRNO.H.

Retourwaarde

Opgesomde waarde die overeenkomt met een bepaalde runtimebibliotheekfoutwaarde.

Opmerkingen

Zie CFileException::m_cause voor een lijst met de mogelijke opgesomde waarden.

Example

ASSERT(CFileException::ErrnoToException(EACCES) == 
   CFileException::accessDenied);

CFileException::GetErrorMessage

Hiermee haalt u tekst op die een uitzondering beschrijft.

virtual BOOL GetErrorMessage(
    LPTSTR lpszError,
    UINT nMaxError,
    PUINT pnHelpContext = NULL) const;

Parameterwaarden

lpszError
[in, uit] Aanwijzer naar een buffer die een foutbericht ontvangt.

nMaxError
[in] Het maximum aantal tekens dat de opgegeven buffer kan bevatten. Dit omvat het afsluitteken NULL .

pnHelpContext
[in, uit] Wijs een niet-ondertekend geheel getal aan dat de help-context-id ontvangt. Als NULLer geen id wordt geretourneerd.

Retourwaarde

TRUE als de methode is geslaagd; anders FALSE.

Opmerkingen

Als de opgegeven buffer te klein is, wordt het foutbericht afgekapt.

Example

In het volgende voorbeeld wordt CFileException::GetErrorMessagegebruikt.

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

Bevat waarden die zijn gedefinieerd door een CFileException geïnventariseerd type.

int m_cause;

Opmerkingen

Dit gegevenslid is een openbare variabele van het type int. De enumerators en hun betekenissen zijn als volgt:

Fout Waarde en betekenis
CFileException::none 0: Er is geen fout opgetreden.
CFileException::genericException 1: Er is een niet-opgegeven fout opgetreden.
CFileException::fileNotFound 2: Het bestand kan niet worden gevonden.
CFileException::badPath 3: Alle of een deel van het pad is ongeldig.
CFileException::tooManyOpenFiles 4: Het toegestane aantal geopende bestanden is overschreden.
CFileException::accessDenied 5: Het bestand kan niet worden geopend.
CFileException::invalidFile 6: Er is geprobeerd een ongeldige bestandsingang te gebruiken.
CFileException::removeCurrentDir 7: De huidige werkmap kan niet worden verwijderd.
CFileException::directoryFull 8: Er zijn geen mapvermeldingen meer.
CFileException::badSeek 9: Er is een fout opgetreden bij het instellen van de bestandsaanwijzer.
CFileException::hardIO 10: Er is een hardwarefout opgetreden.
CFileException::sharingViolation 11: SHARE.EXE niet geladen of een gedeelde regio is vergrendeld.
CFileException::lockViolation 12: Er is geprobeerd een regio te vergrendelen die al is vergrendeld.
CFileException::diskFull 13: De schijf is vol.
CFileException::endOfFile 14: Het einde van het bestand is bereikt.

Opmerking

Deze CFileException oorzaak enumerators verschillen van de CArchiveException oorzaak enumerators.

Opmerking

CArchiveException::generic is verouderd. Gebruik in plaats daarvan genericException. Als generic wordt gebruikt in een toepassing en is gebouwd met /clr, zijn de resulterende syntaxisfouten niet gemakkelijk te ontcijferen.

Example

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

Bevat de foutcode van het besturingssysteem voor deze uitzondering.

LONG m_lOsError;

Opmerkingen

Raadpleeg de technische handleiding van uw besturingssysteem voor een lijst met foutcodes. Dit gegevenslid is een openbare variabele van het type LONG.

CFileException::m_strFileName

Bevat de naam van het bestand voor deze uitzonderingsvoorwaarde.

CString m_strFileName;

CFileException::OsErrorToException

Retourneert een enumerator die overeenkomt met een bepaalde lOsError waarde. Als de foutcode onbekend is, retourneert CFileException::genericde functie .

static int PASCAL OsErrorToException(LONG lOsError);

Parameterwaarden

lOsError
Een specifieke foutcode van het besturingssysteem.

Retourwaarde

Opgesomde waarde die overeenkomt met een bepaalde foutwaarde van het besturingssysteem.

Example

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

CFileException::ThrowErrno

Hiermee wordt een CFileException object gemaakt dat overeenkomt met een bepaalde nErrno waarde, waarna de uitzondering wordt gegenereerd.

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

Parameterwaarden

nErrno
Een geheel getalfoutcode zoals gedefinieerd in het runtime-include-bestand ERRNO.H.

lpszFileName
Een aanwijzer naar de tekenreeks met de naam van het bestand dat de uitzondering heeft veroorzaakt, indien beschikbaar.

Example

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

CFileException::ThrowOsError

Hiermee wordt een CFileException corresponderende waarde gegenereerd die overeenkomt met een bepaalde lOsError waarde. Als de foutcode onbekend is, genereert de functie een uitzondering die is gecodeerd als CFileException::generic.

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

Parameterwaarden

lOsError
Een specifieke foutcode van het besturingssysteem.

lpszFileName
Een aanwijzer naar de tekenreeks met de naam van het bestand dat de uitzondering heeft veroorzaakt, indien beschikbaar.

Example

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

Zie ook

CException klasse
Hiërarchiegrafiek
Uitzonderingsverwerking