La classe CFileException
Représente une condition d'exception liée à un fichier.
Syntaxe
class CFileException : public CException
Membres
Constructeurs publics
Nom | Description |
---|---|
CFileException::CFileException |
Construit un objet CFileException . |
Méthodes publiques
Nom | Description |
---|---|
CFileException::ErrnoToException |
Retourne le code correspondant à un numéro d’erreur d’exécution. |
CFileException::GetErrorMessage |
Récupère le message décrivant une exception. |
CFileException::OsErrorToException |
Retourne un code de cause correspondant à un code d’erreur du système d’exploitation. |
CFileException::ThrowErrno |
Lève une exception de fichier en fonction d’un numéro d’erreur d’exécution. |
CFileException::ThrowOsError |
Lève une exception de fichier en fonction d’un numéro d’erreur du système d’exploitation. |
Membres de données publics
Nom | Description |
---|---|
CFileException::m_cause |
Contient du code portable correspondant à la cause de l’exception. |
CFileException::m_lOsError |
Contient le numéro d’erreur du système d’exploitation associé. |
CFileException::m_strFileName |
Contient le nom du fichier pour cette exception. |
Notes
La CFileException
classe inclut les membres de données publiques qui contiennent le code de cause portable et le numéro d’erreur spécifique au système d’exploitation. La classe fournit également des fonctions membres statiques pour lever des exceptions de fichier et pour retourner des codes de cause pour les erreurs du système d’exploitation et les erreurs d’exécution C.
CFileException
les objets sont construits et levées dans CFile
les fonctions membres et dans les fonctions membres des classes dérivées. Vous pouvez accéder à ces objets dans l’étendue d’une CATCH
expression. Pour la portabilité, utilisez uniquement le code de cause pour obtenir la raison d’une exception. Pour plus d’informations sur les exceptions, consultez l’article Gestion des exceptions (MFC).
Hiérarchie d'héritage
CFileException
Spécifications
En-tête : afx.h
CFileException::CFileException
Construit un CFileException
objet qui stocke le code de cause et le code du système d’exploitation dans l’objet.
CFileException(
int cause = CFileException::none,
LONG lOsError = -1,
LPCTSTR lpszArchiveName = NULL);
Paramètres
cause
Variable de type énumérée qui indique la raison de l’exception. Consultez CFileException::m_cause
la liste des valeurs possibles.
lOsError
Raison spécifique au système d’exploitation de l’exception, le cas échéant. Le lOsError
paramètre fournit plus d’informations que cause
cela.
lpszArchiveName
Pointe vers une chaîne contenant le nom de l’objet à l’origine CFile
de l’exception.
Notes
N’utilisez pas ce constructeur directement, mais appelez plutôt la fonction AfxThrowFileException
globale.
Remarque
La variable lOsError
s’applique uniquement aux objets et CStdioFile
aux CFile
objets. La CMemFile
classe ne gère pas ce code d’erreur.
CFileException::ErrnoToException
Convertit une valeur d’erreur de bibliothèque d’exécution donnée en valeur d’erreur CFileException
énumérée.
static int PASCAL ErrnoToException(int nErrno);
Paramètres
nErrno
Code d’erreur entier tel que défini dans le fichier ERRNO.H
include au moment de l’exécution.
Valeur de retour
Valeur énumérée qui correspond à une valeur d’erreur de bibliothèque d’exécution donnée.
Notes
Consultez CFileException::m_cause
la liste des valeurs énumérées possibles.
Exemple
ASSERT(CFileException::ErrnoToException(EACCES) ==
CFileException::accessDenied);
CFileException::GetErrorMessage
Récupère du texte qui décrit une exception.
virtual BOOL GetErrorMessage(
LPTSTR lpszError,
UINT nMaxError,
PUINT pnHelpContext = NULL) const;
Paramètres
lpszError
[in, out] Pointeur vers une mémoire tampon qui reçoit un message d’erreur.
nMaxError
[in] Nombre maximal de caractères que la mémoire tampon spécifiée peut contenir. Cela inclut le caractère de NULL
fin.
pnHelpContext
[in, out] Pointeur vers un entier non signé qui reçoit l’ID de contexte d’aide. Si NULL
, aucun ID n’est retourné.
Valeur de retour
TRUE
si la méthode a réussi ; sinon FALSE
.
Notes
Si la mémoire tampon spécifiée est trop petite, le message d’erreur est tronqué.
Exemple
L'exemple suivant utilise 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
Contient des valeurs définies par un type énuméré CFileException
.
int m_cause;
Notes
Ce membre de données est une variable publique de type int
. Voici les énumérateurs et leurs significations :
Error | Valeur et signification |
---|---|
CFileException::none |
0 : Aucune erreur n’a eu lieu. |
CFileException::genericException |
1 : Une erreur non spécifiée s’est produite. |
CFileException::fileNotFound |
2 : Impossible de trouver le fichier. |
CFileException::badPath |
3 : Tout ou partie du chemin d’accès n’est pas valide. |
CFileException::tooManyOpenFiles |
4 : Le nombre autorisé de fichiers ouverts a été dépassé. |
CFileException::accessDenied |
5 : Impossible d’accéder au fichier. |
CFileException::invalidFile |
6 : Une tentative d’utilisation d’un handle de fichier non valide a été effectuée. |
CFileException::removeCurrentDir |
7 : Impossible de supprimer le répertoire de travail actuel. |
CFileException::directoryFull |
8 : Il n’y a plus d’entrées d’annuaire. |
CFileException::badSeek |
9 : Une erreur s’est produite lors de la tentative de définition du pointeur de fichier. |
CFileException::hardIO |
10 : Une erreur matérielle s’est produite. |
CFileException::sharingViolation |
11 : SHARE.EXE n’a pas été chargé ou une région partagée a été verrouillée. |
CFileException::lockViolation |
12 : Il y a eu une tentative de verrouillage d’une région déjà verrouillée. |
CFileException::diskFull |
13 : Le disque est plein. |
CFileException::endOfFile |
14 : La fin du fichier a été atteinte. |
Remarque
Ces énumérateurs de cause CFileException
sont distincts des énumérateurs de cause CArchiveException
.
Remarque
CArchiveException::generic
est déconseillé. Utilisez genericException
à la place. Si generic
elle est utilisée dans une application et générée avec /clr
, les erreurs de syntaxe résultantes ne sont pas faciles à déchiffrer.
Exemple
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
Contient le code d’erreur du système d’exploitation pour cette exception.
LONG m_lOsError;
Notes
Consultez le manuel technique de votre système d’exploitation pour obtenir la liste des codes d’erreur. Ce membre de données est une variable publique de type LONG
.
CFileException::m_strFileName
Contient le nom du fichier pour cette condition d’exception.
CString m_strFileName;
CFileException::OsErrorToException
Retourne un énumérateur qui correspond à une valeur donnée lOsError
. Si le code d’erreur est inconnu, la fonction retourne CFileException::generic
.
static int PASCAL OsErrorToException(LONG lOsError);
Paramètres
lOsError
Code d’erreur spécifique au système d’exploitation.
Valeur de retour
Valeur énumérée qui correspond à une valeur d’erreur de système d’exploitation donnée.
Exemple
ASSERT(CFileException::OsErrorToException(ERROR_ACCESS_DENIED) ==
CFileException::accessDenied);
CFileException::ThrowErrno
Construit un CFileException
objet correspondant à une valeur donnée nErrno
, puis lève l’exception.
static void PASCAL ThrowErrno(int nErrno, LPCTSTR lpszFileName = NULL);
Paramètres
nErrno
Code d’erreur entier tel que défini dans le fichier ERRNO.H
include au moment de l’exécution.
lpszFileName
Pointeur vers la chaîne contenant le nom du fichier qui a provoqué l’exception, le cas échéant.
Exemple
CFileException::ThrowErrno(EACCES); // "access denied"
CFileException::ThrowOsError
Lève une CFileException
valeur correspondante à une valeur donnée lOsError
. Si le code d’erreur est inconnu, la fonction lève une exception codée en tant que CFileException::generic
.
static void PASCAL ThrowOsError(LONG lOsError, LPCTSTR lpszFileName = NULL);
Paramètres
lOsError
Code d’erreur spécifique au système d’exploitation.
lpszFileName
Pointeur vers la chaîne contenant le nom du fichier qui a provoqué l’exception, le cas échéant.
Exemple
CFileException::ThrowOsError(ERROR_ACCESS_DENIED); // "access denied"
Voir aussi
CException
Classe
Graphique hiérarchique
Traitement des exceptions