Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe
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 AfxThrowFileExceptionglobale.
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.Hinclude 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.Hinclude 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