#include <fstream>
#include <iostream>
#include <exception>
int main(int argc, char **argv)
{ try
{ std::ifstream sFile(argv[1]);
sFile.exceptions(std::ios::badbit | std::ios::failbit);
} catch (const std::exception &_r)
{ std::cerr << "exception: " << _r.what() << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
如果传入的文件不存在,此代码将使用 g++ 4.5.2 打印出来(是的,我知道这是一个非常旧的版本,但我没有足够的影响力来更改它):
“例外:basic_ios::清除”
使用 Visual C++ 12:
“异常:ios_base::failbit 设置:iostream 流错误”
考虑到系统错误消息很久以前就已经引入了,我认为这是不可接受的。
系统调用失败后:
std::cout << strerror(errno) << std::endl;
Run Code Online (Sandbox Code Playgroud)
将产生一些有用的错误消息。您将需要#includestring.h 和 errno.h。
C++ 异常在这里没有用处。这些 POSIX 函数通常会产生更有意义的诊断。
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |