Biblioteca C ++ IOS - excepciones
Descripción
Se utiliza para obtener / establecer una máscara de excepciones. La máscara de excepción es un valor interno mantenido por todos los objetos de flujo que especifican para qué indicadores de estado se lanza una excepción de falla de tipo de miembro (o algún tipo derivado) cuando se establece. Esta máscara es un objeto de tipo de miembro iostate, que es un valor formado por cualquier combinación de las siguientes constantes de miembro:
valor (constantes miembro) |
indica | funciones para comprobar las banderas de estado | ||||
---|---|---|---|---|---|---|
bueno() | eof () | fallar() | malo() | rdstate () | ||
buen bit | Sin errores (valor cero iostato) | true |
false |
false |
false |
buen bit |
eofbit | Fin de archivo alcanzado en la operación de entrada | false |
true |
false |
false |
eofbit |
fallo | Error lógico en la operación de E / S | false |
false |
true |
false |
fallo |
badbit | Error de lectura / escritura en la operación de E / S | false |
false |
true |
true |
badbit |
Declaración
A continuación se muestra la declaración de la función ios :: exceptions.
get (1) iostate exceptions() const;
set (2) void exceptions (iostate except);
El primer primer formulario anterior (1) devuelve la máscara de excepción actual para la secuencia.
La segunda forma anterior (2) establece una nueva máscara de excepción para el flujo y borra los indicadores de estado de error del flujo (como si se hubiera llamado al miembro clear ()).
Parámetros
except - Un valor de máscara de bits de tipo de miembro iostate formado por una combinación de bits de bandera de estado de error que se establecerán (badbit, eofbit y / o failbit), o se establecerán en goodbit (o cero).
Valor devuelto
Devuelve una máscara de bits de tipo de miembro iostate que representa la máscara de excepción existente antes de la llamada a esta función miembro.
Excepciones
Basic guarantee - si se lanza una excepción, el flujo está en un estado válido.
Carreras de datos
Accede (1) o modifica (2) el objeto de flujo.
El acceso simultáneo al mismo objeto de flujo puede provocar carreras de datos.
Ejemplo
En el siguiente ejemplo se explica la función 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;
}