Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Představuje podmínku výjimky související se souborem.
Syntaxe
class CFileException : public CException
Členové
Veřejné konstruktory
| Název | Popis |
|---|---|
CFileException::CFileException |
CFileException Vytvoří objekt. |
Veřejné metody
| Název | Popis |
|---|---|
CFileException::ErrnoToException |
Vrátí kód příčiny odpovídající číslu chyby za běhu. |
CFileException::GetErrorMessage |
Načte zprávu popisující výjimku. |
CFileException::OsErrorToException |
Vrátí kód příčiny odpovídající kódu chyby operačního systému. |
CFileException::ThrowErrno |
Vyvolá výjimku souboru na základě čísla chyby modulu runtime. |
CFileException::ThrowOsError |
Vyvolá výjimku souboru na základě čísla chyby operačního systému. |
Veřejné datové členy
| Název | Popis |
|---|---|
CFileException::m_cause |
Obsahuje přenosný kód odpovídající příčině výjimky. |
CFileException::m_lOsError |
Obsahuje související číslo chyby operačního systému. |
CFileException::m_strFileName |
Obsahuje název souboru pro tuto výjimku. |
Poznámky
Třída CFileException obsahuje veřejné datové členy, které obsahují kód přenosné příčiny a číslo chyby specifické pro operační systém. Třída také poskytuje statické členské funkce pro vyvolání výjimek souborů a pro vrácení kódů příčin pro chyby operačního systému i chyby za běhu jazyka C.
CFileException objekty jsou sestaveny a vyvolány v CFile členských funkcích a v členských funkcích odvozených tříd. K těmto objektům můžete přistupovat v rámci rozsahu výrazu CATCH . Pro přenositelnost použijte pouze kód příčiny k získání důvodu výjimky. Další informace ových
Hierarchie dědičnosti
CFileException
Požadavky
Záhlaví: afx.h
CFileException::CFileException
CFileException Vytvoří objekt, který uloží kód příčiny a kód operačního systému v objektu.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Parametry
cause
Výčtová proměnná typu, která označuje důvod výjimky. Podívejte CFileException::m_cause se na seznam možných hodnot.
lOsError
Důvod výjimky specifický pro operační systém, pokud je k dispozici. Parametr lOsError poskytuje více informací, než cause tomu bylo.
lpszArchiveName
Odkazuje na řetězec obsahující název objektu CFile , který způsobuje výjimku.
Poznámky
Nepoužívejte tento konstruktor přímo, ale raději volejte globální funkci AfxThrowFileException.
Poznámka:
Proměnná lOsError se vztahuje pouze na CFile objekty a CStdioFile objekty. Třída CMemFile nezpracuje tento kód chyby.
CFileException::ErrnoToException
Převede danou chybovou hodnotu knihovny za běhu na výčtovou chybovou CFileException hodnotu.
static int PASCAL ErrnoToException(int nErrno);
Parametry
nErrno
Celočíselné kód chyby definovaný v souboru ERRNO.Hzahrnutí za běhu .
Návratová hodnota
Výčtová hodnota odpovídající dané chybové hodnotě knihovny za běhu
Poznámky
Podívejte CFileException::m_cause se na seznam možných výčtových hodnot.
Příklad
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Načte text, který popisuje výjimku.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Parametry
lpszError
[in, out] Ukazatel na vyrovnávací paměť, která obdrží chybovou zprávu.
nMaxError
[v] Maximální počet znaků, které může zadaná vyrovnávací paměť obsahovat. To zahrnuje ukončovací NULL znak.
pnHelpContext
[in, out] Ukazatel na celé číslo bez znaménka, které obdrží ID kontextu nápovědy. Pokud NULLse nevrátí žádné ID.
Návratová hodnota
TRUE pokud byla metoda úspěšná; jinak FALSE.
Poznámky
Pokud je zadaná vyrovnávací paměť příliš malá, chybová zpráva se zkrátí.
Příklad
Následující příklad používá 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
Obsahuje hodnoty definované výčtovým typem CFileException .
int m_cause;
Poznámky
Tento datový člen je veřejná proměnná typu int. Enumerátory a jejich významy jsou následující:
| Chyba | Hodnota a význam |
|---|---|
CFileException::none |
0: Nedošlo k žádné chybě. |
CFileException::genericException |
1: Došlo k nezadané chybě. |
CFileException::fileNotFound |
2: Soubor nelze najít. |
CFileException::badPath |
3: Všechna nebo část cesty jsou neplatné. |
CFileException::tooManyOpenFiles |
4: Byl překročen povolený počet otevřených souborů. |
CFileException::accessDenied |
5: Soubor nelze získat přístup. |
CFileException::invalidFile |
6: Došlo k pokusu o použití neplatného popisovače souboru. |
CFileException::removeCurrentDir |
7: Aktuální pracovní adresář nelze odebrat. |
CFileException::directoryFull |
8: Neexistují žádné další položky adresáře. |
CFileException::badSeek |
9: Při pokusu o nastavení ukazatele souboru došlo k chybě. |
CFileException::hardIO |
10: Došlo k chybě hardwaru. |
CFileException::sharingViolation |
11: SHARE.EXE nenačetla se nebo byla uzamčena sdílená oblast. |
CFileException::lockViolation |
12: Došlo k pokusu o uzamčení oblasti, která již byla uzamčena. |
CFileException::diskFull |
13: Disk je plný. |
CFileException::endOfFile |
14: Byl dosažen konec souboru. |
Poznámka:
Tyto CFileException příčiny enumerátory se liší od CArchiveException příčin výčtů.
Poznámka:
CArchiveException::generic je zastaralý. Místo toho použijte genericException. Pokud generic se používá v aplikaci a je sestaven s /clr, výsledné chyby syntaxe nejsou snadné dešifrovat.
Příklad
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
Obsahuje kód chyby operačního systému pro tuto výjimku.
LONG m_lOsError;
Poznámky
Seznam kódů chyb najdete v technické příručce k operačnímu systému. Tento datový člen je veřejná proměnná typu LONG.
CFileException::m_strFileName
Obsahuje název souboru pro tuto podmínku výjimky.
CString m_strFileName;
CFileException::OsErrorToException
Vrátí enumerátor, který odpovídá dané lOsError hodnotě. Pokud je kód chyby neznámý, funkce vrátí CFileException::generic.
static int PASCAL OsErrorToException(LONG lOsError);
Parametry
lOsError
Kód chyby specifický pro operační systém.
Návratová hodnota
Výčtová hodnota odpovídající dané chybové hodnotě operačního systému.
Příklad
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
CFileException Vytvoří objekt odpovídající dané nErrno hodnotě a vyvolá výjimku.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Parametry
nErrno
Celočíselné kód chyby definovaný v souboru ERRNO.Hzahrnutí za běhu .
lpszFileName
Ukazatel na řetězec obsahující název souboru, který způsobil výjimku, pokud je k dispozici.
Příklad
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
CFileException Vyvolá odpovídající dané lOsError hodnotě. Pokud je kód chyby neznámý, funkce vyvolá výjimku kódovanou jako CFileException::generic.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Parametry
lOsError
Kód chyby specifický pro operační systém.
lpszFileName
Ukazatel na řetězec obsahující název souboru, který způsobil výjimku, pokud je k dispozici.
Příklad
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"