Bibliothèque C ++ IOS - exceptions

La description

Il est utilisé pour obtenir / définir le masque d'exceptions. Le masque d'exception est une valeur interne conservée par tous les objets de flux spécifiant pour quel état marque une exception d'échec de type de membre (ou un type dérivé) lorsqu'elle est définie. Ce masque est un objet de type de membre iostate, qui est une valeur formée par n'importe quelle combinaison des constantes de membre suivantes -

valeur

(constantes de membre)

indique fonctions pour vérifier les indicateurs d'état
bien() eof () échouer() mal() rdstate ()
goodbit Aucune erreur (valeur zéro État) true false false false goodbit
eofbit Fin de fichier atteinte lors de l'opération d'entrée false true false false eofbit
échec Erreur logique lors du fonctionnement des E / S false false true false échec
badbit Erreur de lecture / écriture lors du fonctionnement d'E / S false false true true badbit

Déclaration

Voici la déclaration de la fonction ios :: exceptions.

get (1)	iostate exceptions() const;
set (2)	void exceptions (iostate except);

Le premier formulaire (1) ci-dessus renvoie le masque d'exception actuel pour le flux.

Le deuxième formulaire ci-dessus (2) définit un nouveau masque d'exception pour le flux et efface les indicateurs d'état d'erreur du flux (comme si le membre clear () était appelé).

Paramètres

except - Une valeur de masque de bits de type de membre iostate formée par une combinaison de bits d'indicateur d'état d'erreur à définir (badbit, eofbit et / ou failbit), ou mis à goodbit (ou zéro).

Valeur de retour

Il renvoie un masque de bits de type de membre iostate représentant le masque d'exception existant avant l'appel à cette fonction membre.

Exceptions

Basic guarantee - si une exception est levée, le flux est dans un état valide.

Courses de données

Accède (1) ou modifie (2) l'objet de flux.

L'accès simultané au même objet de flux peut provoquer des courses de données.

Exemple

L'exemple ci-dessous explique la fonction ios :: fill.

#include <iostream>     
#include <fstream>      

int main () {
   std::ifstream file;
   file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );
   try {
      file.open ("test.txt");
      while (!file.eof()) file.get();
      file.close();
   }
   catch (std::ifstream::failure e) {
      std::cerr << "Exception opening/reading/closing file\n";
   }
   return 0;
}