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;
}