Biblioteca C ++ IOS - exceções

Descrição

É usado para obter / definir máscara de exceções. A máscara de exceção é um valor interno mantido por todos os objetos de fluxo especificando para quais sinalizadores de estado uma exceção de falha de tipo de membro (ou algum tipo derivado) é lançada quando definido. Esta máscara é um objeto do tipo de membro iostate, que é um valor formado por qualquer combinação das seguintes constantes de membro -

valor

(constantes de membro)

indica funções para verificar sinalizadores de estado
Boa() eof () falhou() ruim() rdstate ()
goodbit Sem erros (valor zero iostate) true false false false goodbit
eofbit Fim do arquivo alcançado na operação de entrada false true false false eofbit
failbit Erro lógico na operação i / o false false true false failbit
badbit Erro de leitura / gravação na operação i / o false false true true badbit

Declaração

A seguir está a declaração para a função ios :: exceções.

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

O primeiro formulário (1) acima retorna a máscara de exceção atual para o fluxo.

A segunda forma (2) acima define uma nova máscara de exceção para o fluxo e limpa os sinalizadores de estado de erro do fluxo (como se o membro clear () fosse chamado).

Parâmetros

except - Um valor de bitmask do tipo de membro iostate formado por uma combinação de bits de sinalizador de estado de erro a ser definido (badbit, eofbit e / ou failbit) ou definido como goodbit (ou zero).

Valor de retorno

Ele retorna uma máscara de bits do tipo de membro iostate que representa a máscara de exceção existente antes da chamada para esta função de membro.

Exceções

Basic guarantee - se uma exceção for lançada, o fluxo está em um estado válido.

Corridas de dados

Acessa (1) ou modifica (2) o objeto de fluxo.

O acesso simultâneo ao mesmo objeto de fluxo pode causar disputas de dados.

Exemplo

No exemplo abaixo, explica sobre a função 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;
}