Libreria IOS C ++ - eccezioni

Descrizione

Viene utilizzato per ottenere / impostare la maschera delle eccezioni. La maschera di eccezione è un valore interno mantenuto da tutti gli oggetti del flusso che specifica per quale flag di stato viene generata un'eccezione di errore del tipo di membro (o un tipo derivato) quando impostata. Questa maschera è un oggetto del tipo di membro iostate, che è un valore formato da qualsiasi combinazione delle seguenti costanti del membro:

valore

(costanti membro)

indica funzioni per controllare i flag di stato
bene() eof () fallire() male() rdstate ()
goodbit Nessun errore (valore zero iostato) true false false false goodbit
eofbit Fine file raggiunta durante l'operazione di input false true false false eofbit
failbit Errore logico durante l'operazione i / o false false true false failbit
badbit Errore di lettura / scrittura durante l'operazione di I / O false false true true badbit

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione ios :: exceptions.

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

La prima prima forma sopra (1) restituisce la maschera di eccezione corrente per il flusso.

La seconda forma sopra (2) imposta una nuova maschera di eccezione per il flusso e cancella i flag di stato di errore del flusso (come se fosse stato chiamato il membro clear ()).

Parametri

except - Un valore di maschera di bit del tipo di membro iostate formato da una combinazione di bit di flag di stato di errore da impostare (badbit, eofbit e / o failbit) o ​​impostare su goodbit (o zero).

Valore di ritorno

Restituisce una maschera di bit del tipo di membro iostate che rappresenta la maschera di eccezione esistente prima della chiamata a questa funzione membro.

Eccezioni

Basic guarantee - se viene generata un'eccezione, il flusso è in uno stato valido.

Gare di dati

Accede a (1) o modifica (2) l'oggetto stream.

L'accesso simultaneo allo stesso oggetto flusso può causare gare di dati.

Esempio

Nell'esempio seguente viene illustrata la funzione 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;
}