CFileException Class

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Représente une condition d'exception liée à un fichier.

class CFileException : public CException  

Constructeurs publics

NomDescription
CFileException::CFileExceptionConstruit un objet CFileException.

Méthodes publiques

NomDescription
CFileException::ErrnoToExceptionRetourne une erreur code correspondant à un numéro d’erreur d’exécution.
CFileException::GetErrorMessageRécupère le message décrivant une exception.
CFileException::OsErrorToExceptionRetourne un code d’origine correspondant à un code d’erreur de système d’exploitation.
CFileException::ThrowErrnoLève une exception de fichier basée sur un numéro d’erreur runtime.
CFileException::ThrowOsErrorLève une exception de fichier basée sur un numéro d’erreur de système d’exploitation.

Membres de données publics

NomDescription
CFileException::m_causeContient le code portable correspondant à la cause de l’exception.
CFileException::m_lOsErrorContient le numéro d’erreur de système d’exploitation associés.
CFileException::m_strFileNameContient le nom du fichier pour cette exception.

La CFileException classe contient des membres de données publiques qui contiennent le code portable cause et le numéro d’erreur spécifique du 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 de système d’exploitation et les erreurs d’exécution C.

CFileExceptionles objets sont construits et levées dans CFile fonctions membres et les fonctions membres de classes dérivées. Vous pouvez accéder à ces objets dans la portée d’un 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 la gestion des exceptions (MFC).

CObject

CException

CFileException

En-tête : afx.h

Construit un CFileException objet qui stocke le code d’origine 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
Une variable de type énuméré qui indique la raison de l’exception. Consultez la page CFileException::m_cause pour obtenir la liste des valeurs possibles.

lOsError
Une raison spécifique du système d’exploitation de l’exception, si disponible. Le lOsError paramètre fournit davantage d’informations que cause est.

lpszArchiveName
Pointe vers une chaîne contenant le nom de la CFile objet qui a provoqué l’exception.

Notes

N’utilisez pas ce constructeur directement, mais plutôt appeler la fonction globale [AfxThrowFileException]--brokenlink--(.. / Topic/not%20found.md#afxthrowfileexception).

System_CAPS_ICON_note.jpg Remarque

La variable lOsError s’applique uniquement aux CFile et CStdioFile objets. La CMemFile classe ne gère pas ce code d’erreur.

Convertit une valeur d’erreur de bibliothèque donné en un CFileException erreur valeur énumérée.

static int PASCAL ErrnoToException(int nErrno);

Paramètres

nErrno
Code d’erreur entier tel que défini dans le fichier include d’exécution ERRNO. H.

Valeur de retour

Valeur énumérée qui correspond à une valeur d’erreur de bibliothèque d’exécution donnée.

Notes

Consultez la page CFileException::m_cause pour obtenir la liste de ces valeurs énumérées.

Exemple

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

Récupère le texte qui décrit une exception.

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

Paramètres

[in, out] lpszError
Pointeur vers une mémoire tampon qui reçoit un message d’erreur.

[in] nMaxError
Le nombre maximal de caractères de que la mémoire tampon spécifiée peut contenir. Cela inclut le caractère null de fin.

[in, out] pnHelpContext
Pointeur vers un entier non signé qui reçoit l’ID de contexte d’aide. Si NULL, aucun ID n’est retournée.

Valeur de retour

TRUESi la méthode a réussi ; dans le cas contraire 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();
   }

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 :

  • CFileException::none0 : aucune erreur ne s’est produite.

  • CFileException::genericException1 : une erreur non spécifiée s’est produite.

  • CFileException::fileNotFound2 : le fichier n’a pas pu être localisé.

  • CFileException::badPath3 : tout ou partie du chemin d’accès n’est pas valide.

  • CFileException::tooManyOpenFiles4 : le nombre de fichiers ouverts a été dépassé.

  • CFileException::accessDenied5 : le fichier n’est pas accessible.

  • CFileException::invalidFile6 : il y a une tentative d’utilisation d’un handle de fichier non valide.

  • CFileException::removeCurrentDir7 : Impossible de supprimer le répertoire de travail actuel.

  • CFileException::directoryFull8 : il existe plus d’entrées de répertoire.

  • CFileException::badSeek9 : erreur, essayez de définir le pointeur de fichier.

  • CFileException::hardIO10 : une erreur matérielle s’est produite.

  • CFileException::sharingViolation11 : PARTAGE. EXE n’a pas été chargé, ou une région partagée a été verrouillée.

  • CFileException::lockViolation12 : une tentative de verrouillage d’une région déjà verrouillée.

  • CFileException::diskFull14 : le disque est saturé.

  • CFileException::endOfFile15 : la fin du fichier a été atteinte.

    System_CAPS_ICON_note.jpg Remarque

    Ces énumérateurs de cause CFileException sont distincts des énumérateurs de cause CArchiveException.

    System_CAPS_ICON_note.jpg Remarque

    CArchiveException::generic est déconseillé. Utilisez plutôt genericException. Si generic est utilisé dans une application et généré avec /clr, les erreurs de syntaxe qui en résultent 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();
         }

Contient le code d’erreur de système d’exploitation pour cette exception.

LONG m_lOsError;  

Notes

Consultez le manuel technique de votre système d’exploitation pour obtenir une liste des codes d’erreur. Ce membre est une variable publique de type LONG.

Contient le nom du fichier pour cette condition d’exception.

CString m_strFileName;  

Retourne un énumérateur qui correspond à une donnée lOsError valeur. 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 du système d’exploitation.

Valeur de retour

Valeur énumérée qui correspond à une valeur d’erreur de système d’exploitation donné.

Exemple

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

Construit un CFileException objet correspondant à une donnée nErrno valeur, 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 include d’exécution ERRNO. H.

lpszFileName
Un pointeur vers la chaîne contenant le nom du fichier qui a provoqué l’exception, si disponible.

Exemple

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

Lève une CFileException correspondant à une donnée lOsError valeur. Si le code d’erreur est inconnu, alors que 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 du système d’exploitation.

lpszFileName
Un pointeur vers la chaîne contenant le nom du fichier qui a provoqué l’exception, si disponible.

Exemple

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

CException (classe)
Graphique de la hiérarchie
Traitement des exceptions

Afficher: