Cpp-standard-library-cpp-ios-exceptions

提供:Dev Guides
移動先:案内検索

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