Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Fájlhoz kapcsolódó kivételfeltételt jelöl.
Szemantika
class CFileException : public CException
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
CFileException::CFileException |
Egy CFileException objektumot hoz létre. |
Nyilvános metódusok
| Név | Description |
|---|---|
CFileException::ErrnoToException |
Futásidejű hibaszámnak megfelelő okkódot ad vissza. |
CFileException::GetErrorMessage |
Lekéri a kivételt leíró üzenetet. |
CFileException::OsErrorToException |
Egy operációsrendszer-hibakódnak megfelelő okkódot ad vissza. |
CFileException::ThrowErrno |
Futásidejű hibaszám alapján fájlkivételt eredményez. |
CFileException::ThrowOsError |
Fájlkivételt eredményez az operációs rendszer hibaszáma alapján. |
Nyilvános adatok tagjai
| Név | Description |
|---|---|
CFileException::m_cause |
A kivétel okának megfelelő hordozható kódot tartalmaz. |
CFileException::m_lOsError |
A kapcsolódó operációsrendszer-hibaszámot tartalmazza. |
CFileException::m_strFileName |
A kivételhez tartozó fájl nevét tartalmazza. |
Megjegyzések
Az CFileException osztály olyan nyilvános adattagokat tartalmaz, amelyek a hordozható okkódot és az operációs rendszerspecifikus hibaszámot tartalmazzák. Az osztály statikus tagfüggvényeket is biztosít a fájlkivüldések eldobására, valamint az operációs rendszer hibáinak és a C futásidejű hibák okkódjainak visszaadására.
CFileException az objektumok tagfüggvényekben CFile és származtatott osztályok tagfüggvényeiben jönnek létre és jelennek meg. Ezeket az objektumokat egy CATCH kifejezés hatókörén belül érheti el. A hordozhatóság érdekében csak az okkódot használja a kivétel okának lekéréséhez. A kivételekről további információt a Kivételkezelés (MFC) című cikkben talál.
Öröklési hierarchia
CFileException
Requirements
Fejléc:afx.h
CFileException::CFileException
Létrehoz egy CFileException objektumot, amely az okkódot és az operációs rendszer kódját tárolja az objektumban.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Paraméterek
cause
Enumerált típusváltozó, amely a kivétel okát jelzi. Tekintse meg CFileException::m_cause a lehetséges értékek listáját.
lOsError
A kivétel operációsrendszer-specifikus oka, ha elérhető. A lOsError paraméter több információt biztosít, mint cause amennyi.
lpszArchiveName
A kivételt okozó objektum nevét CFile tartalmazó sztringre mutat.
Megjegyzések
Ne használja közvetlenül ezt a konstruktort, hanem hívja meg a globális függvényt AfxThrowFileException.
Megjegyzés:
A változó lOsError csak az objektumokra CFile vonatkozik CStdioFile . Az CMemFile osztály nem kezeli ezt a hibakódot.
CFileException::ErrnoToException
Egy adott futásidejű kódtár hibaértékét enumerált hibaértékké CFileException alakítja.
static int PASCAL ErrnoToException(int nErrno);
Paraméterek
nErrno
A futásidejű include fájlban ERRNO.Hdefiniált egész szám hibakódja.
Visszaadott érték
Egy adott futásidejű kódtár hibaértékének megfelelő számbavételi érték.
Megjegyzések
Tekintse meg CFileException::m_cause a lehetséges számbavételi értékek listáját.
Example
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Lekéri a kivételt leíró szöveget.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Paraméterek
lpszError
[be, ki] Mutató egy hibaüzenetet kapó pufferre.
nMaxError
[in] A megadott puffer legfeljebb ennyi karaktert tartalmazhat. Ez magában foglalja a megszüntető NULL karaktert is.
pnHelpContext
[be, ki] Mutasson egy aláíratlan egész számra, amely megkapja a súgókörnyezet azonosítóját. Ha NULLa függvény nem ad vissza azonosítót.
Visszaadott érték
TRUE ha a módszer sikeres volt; egyéb esetben FALSE.
Megjegyzések
Ha a megadott puffer túl kicsi, a hibaüzenet csonkolt.
Example
Az alábbi példa CFileException::GetErrorMessagehasznál.
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
Számbavételi típus által definiált CFileException értékeket tartalmaz.
int m_cause;
Megjegyzések
Ez az adattag egy nyilvános változótípus int. Az enumerátorok és jelentésük a következő:
| Error | Érték és jelentés |
|---|---|
CFileException::none |
0: Nem történt hiba. |
CFileException::genericException |
1: Meghatározatlan hiba történt. |
CFileException::fileNotFound |
2: A fájl nem található. |
CFileException::badPath |
3: Az elérési út egésze vagy egy része érvénytelen. |
CFileException::tooManyOpenFiles |
4: A megnyitott fájlok engedélyezett száma túllépte a megengedett értéket. |
CFileException::accessDenied |
5: A fájl nem érhető el. |
CFileException::invalidFile |
6: Érvénytelen fájlleírót kíséreltek meg használni. |
CFileException::removeCurrentDir |
7: Az aktuális munkakönyvtár nem távolítható el. |
CFileException::directoryFull |
8: Nincs több könyvtárbejegyzés. |
CFileException::badSeek |
9: Hiba történt a fájlmutató beállításával. |
CFileException::hardIO |
10: Hardverhiba történt. |
CFileException::sharingViolation |
11: SHARE.EXE nincs betöltve, vagy egy megosztott régió zárolva lett. |
CFileException::lockViolation |
12: Kísérlet történt egy már zárolt régió zárolására. |
CFileException::diskFull |
13: A lemez megtelt. |
CFileException::endOfFile |
14: A fájl vége el lett érve. |
Megjegyzés:
Ezek az CFileException ok-enumerátorok különböznek az CArchiveException ok-enumerátoroktól.
Megjegyzés:
CArchiveException::generic már nem ajánlott. A genericException használható helyette. Ha generic egy alkalmazásban használják, és azzal /clrvannak felépítve, az ebből eredő szintaxishibákat nem könnyű megfejteni.
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
A kivétel operációsrendszer-hibakódját tartalmazza.
LONG m_lOsError;
Megjegyzések
A hibakódok listáját az operációs rendszer műszaki kézikönyvében találhatja meg. Ez az adattag egy nyilvános változótípus LONG.
CFileException::m_strFileName
A kivételfeltétel fájlnevét tartalmazza.
CString m_strFileName;
CFileException::OsErrorToException
Egy adott értéknek megfelelő enumerátort ad lOsError vissza. Ha a hibakód ismeretlen, akkor a függvény ad vissza CFileException::generic.
static int PASCAL OsErrorToException(LONG lOsError);
Paraméterek
lOsError
Operációs rendszerspecifikus hibakód.
Visszaadott érték
Egy adott operációsrendszer-hibaértéknek megfelelő számbavételi érték.
Example
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
CFileException Egy adott nErrno értéknek megfelelő objektumot hoz létre, majd a kivételt veti ki.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Paraméterek
nErrno
A futásidejű include fájlban ERRNO.Hdefiniált egész szám hibakódja.
lpszFileName
A kivételt okozó fájl nevét tartalmazó sztringre mutató mutató, ha elérhető.
Example
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
CFileException Egy adott értéknek megfelelő értéket ad lOsError vissza. Ha a hibakód ismeretlen, akkor a függvény kivételkóddal kódot ad CFileException::generic.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Paraméterek
lOsError
Operációs rendszerspecifikus hibakód.
lpszFileName
A kivételt okozó fájl nevét tartalmazó sztringre mutató mutató, ha elérhető.
Example
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"