当'std :: fstream'无法打开时,是否会抛出异常?

时间:2013-10-23 15:12:55

标签: c++ c++11 exception filestream c++-standard-library

有没有办法让fstream在无法打开文件时抛出异常,我该怎么做?

我知道std::fstream.exceptions()方法以及如何为它分配位,但是什么'有点'会抛出异常?

2 个答案:

答案 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,则抛出您自己编写的异常。