1

まず、ここにいくつかのコードがあります:

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がファイルを開くことができなかったことをメイン関数に知らせるための良い解決策は何ですか?ファイルを開くのに失敗したら実行を終了したい。

よろしくお願いします!

4

1 に答える 1

3

例外を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;
}
于 2012-05-04T15:19:29.743 に答える