有没有办法让fstream
在无法打开文件时抛出异常,我该怎么做?
我知道std::fstream.exceptions()
方法以及如何为它分配位,但是什么'有点'会抛出异常?
答案 0 :(得分:2)
Iostream可以是三种不同的故障状态中的任何一种:失败,坏和eof。 documentation清楚地向您展示了如何使其中任何一个抛出异常;默认情况下,它们都没有,但如果发生任何故障模式,则在布尔上下文中评估流对象将返回false
。
示例:强>
#include <fstream>
std::ifstream infile;
infile.expections(std::ios::failbit);
infile.open("foo.txt"); // throws on failure
答案 1 :(得分:0)
当您打开文件但失败时,请比较
等流if(mystream==false)
{
//File wasn't opened properly
throw openFailed
}
如果您检测到该流为false,则抛出您自己编写的异常。