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