Cpp-standard-library-cpp-ios-exceptions
C ++ IOSライブラリ-例外
説明
例外マスクを取得/設定するために使用されます。 例外マスクは、すべてのストリームオブジェクトによって保持される内部値であり、設定時にメンバー型エラー(または何らかの派生型)の例外がスローされる状態フラグを指定します。 このマスクは、次のメンバー定数の任意の組み合わせによって形成される値であるメンバータイプiostateのオブジェクトです-
値
(メンバー定数)
示す
状態フラグをチェックする関数
+ good()+
+ eof()+
+ fail()+
+ bad()+
+ rdstate()+
+ goodbit +
エラーなし(ゼロ値 + iostate +
)
+ true +
+ false +
+ false +
+ false +
+ goodbit +
+ eofbit +
入力操作でファイルの終わりに達しました
+ false +
+ true +
+ false +
+ false +
+ eofbit +
+ failbit +
I/O操作の論理エラー
+ false +
+ false +
+ true +
+ false +
+ failbit +
+ badbit +
I/O操作での読み取り/書き込みエラー
+ false +
+ false +
+ true +
+ true +
+ badbit +
宣言
- 以下は、ios
- exceptions関数の宣言です。
get (1) iostate exceptions() const;
set (2) void exceptions (iostate except);
上記の最初の最初の形式(1)は、ストリームの現在の例外マスクを返します。
上記の2番目の形式(2)は、ストリームに新しい例外マスクを設定し、ストリームのエラー状態フラグをクリアします(メンバーclear()が呼び出されたかのように)。
パラメーター
*except* -設定するエラー状態フラグビット(badbit、eofbit、フェイルビット)の組み合わせ、またはgoodbit(またはゼロ)に設定するメンバータイプiostateのビットマスク値。
戻り値
このメンバー関数を呼び出す前に、既存の例外マスクを表すiostateメンバー型のビットマスクを返します。
例外
基本保証-例外がスローされた場合、ストリームは有効な状態です。
データの競合
ストリームオブジェクトにアクセス(1)または変更(2)します。
同じストリームオブジェクトへの同時アクセスは、データの競合を引き起こす可能性があります。
例
- 以下の例では、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;
}