C++ ios 库 - exceptions
描述
它用于获取/设置异常掩码。 异常掩码是所有流对象保留的内部值,指定在设置时针对哪些状态标志抛出成员类型失败(或某些派生类型)的异常。这个掩码是一个成员类型iostate的对象,它是由以下成员常量的任意组合形成的一个值 −
值 (成员常量) |
表明 | 检查状态标志的函数 | ||||
---|---|---|---|---|---|---|
good() | eof() | fail() | bad() | rdstate() | ||
goodbit | No errors (zero value iostate) | true |
false |
false |
false |
goodbit |
eofbit | End-of-File reached on input operation | false |
true |
false |
false |
eofbit |
failbit | Logical error on i/o operation | false |
false |
true |
false |
failbit |
badbit | Read/writing error on i/o operation | false |
false |
true |
true |
badbit |
声明
以下是 ios::exceptions 函数的声明。
get (1) iostate exceptions() const; set (2) void exceptions (iostate except);
上述第一种形式 (1) 返回流的当前异常掩码。
上面的第二种形式 (2) 为流设置了一个新的异常掩码,并清除了流的错误状态标志(就像调用了成员 clear() 一样)。
参数
except − 由要设置的错误状态标志位(badbit、eofbit 和/或failbit)或设置为goodbit(或零)的组合形成的成员类型iostate 的位掩码值。
返回值
它返回成员类型 iostate 的位掩码,表示调用此成员函数之前的现有异常掩码。
异常
Basic guarantee − 如果抛出异常,则流处于有效状态。
数据竞争
访问 (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; }