在C ++中,异常/错误是否也设置了错误号?

时间:2014-10-15 09:51:35

标签: c++ exception-handling error-handling fstream

在C ++中,如果我必须知道fstream打开错误的错误号/错误是什么;我怎么知道呢考虑一下,fstream使用以下方法抛出异常:

file.exceptions ( std::ifstream::failbit | std::ifstream::badbit );

换句话说,所有异常是否也必须设置错误编号?

1 个答案:

答案 0 :(得分:0)

警告:以下所有内容都是特定于实现且不可移植的!

通过我的实现,至少在Linux上,C ++ iostream似乎是stdio.h中较低级别C函数的包装器。所以 - 再次,在我的实现 - 在errno出现问题后,可以读取std::fstream值:

#include <iostream>
#include <cerrno>

std::ifstream f{filename};
std::string line;
while (f >> line) {
    // Do something with line 
}
if (f.rdstate() == std::ios_base::badbit) {
    int e = errno; // Find the Posix error number
}

还有一个警告:这不是便携式的,可能不适合你。我提到了吗?