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