【发布时间】:2026-01-19 19:45:02
【问题描述】:
有没有办法让fstream 在无法打开文件时引发异常,我该怎么做?
我知道std::fstream.exceptions() 方法以及如何为其分配位,但是什么“位”会引发异常?
【问题讨论】:
标签: c++ c++11 exception filestream c++-standard-library
有没有办法让fstream 在无法打开文件时引发异常,我该怎么做?
我知道std::fstream.exceptions() 方法以及如何为其分配位,但是什么“位”会引发异常?
【问题讨论】:
标签: c++ c++11 exception filestream c++-standard-library
Iostream 可以是三种不同故障状态中的任何一种:fail、bad 和 eof。 documentation 清楚地向您展示了如何使其中任何一个引发异常;默认情况下,它们都不会这样做,但如果发生任何故障模式,则在布尔上下文中评估流对象会返回 false。
示例:
#include <fstream>
std::ifstream infile;
infile.expections(std::ios::failbit);
infile.open("foo.txt"); // throws on failure
【讨论】:
当你打开一个文件失败时,比较流如
if(mystream==false)
{
//File wasn't opened properly
throw openFailed
}
如果您检测到流为假,则抛出您自己编写的异常。
【讨论】: