首先,这是一些代码:
class A
{
public:
A()
{
//...
readTheFile(mySpecialPath);
//...
}
A(boost::filesystem::path path)
{
//...
readTheFile(path);
//...
}
protected:
void readTheFile(boost::filesystem::path path)
{
//First, check whether path exists e.g. by
//using boost::filesystem::exists(path).
//But how to propagate an error to the main function?
}
//...
};
int main(int argc, char **argv)
{
A myClass;
//Some more code which should not be run when A::readTheFile fails
}
让主要功能知道A::readTheFile无法打开文件的最佳解决方案是什么?打开文件失败时,我想终止执行。
提前谢谢了!
最佳答案
让readTheFile()
抛出异常:
protected:
void readTheFile(boost::filesystem::path path)
{
//First, check whether path exists e.g. by
//using boost::filesystem::exists(path).
//But how to propagate an error to the main function?
if (/*some-failure-occurred*/)
{
throw std::runtime_error("Failed to read file: " + path);
}
}
...
int main()
{
try
{
A myObj;
//Some more code which should not be run when A::readTheFile fails
}
catch (const std::runtime_error& e)
{
std::cerr << e.what() << "\n";
}
return 0;
}
关于c++ - 使用boost::filesystem时如何正确处理错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10451399/