首先,这是一些代码:

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/

10-12 20:42