0

たとえば、これは runtime_error を使用して行う方法です

#include <exception>
#include <filesystem>

std::exception &foo(){
    try {
        if(!std::filesystem::is_directory(std::filesystem::path("sdfsdf"))){
            throw std::runtime_error("Error14");
        }
    }
    catch (std::exception &e) {
        return e;
    }
}

int main(){
    foo().what();
    // then i do smth with this error
}

似たようなことをする方法ですが、std :: ファイルシステムからエラーが返されます。

std::filesystem::filesystem_error

私はこれを試しました - >

#include <filesystem>
std::filesystem::filesystem_error &foo()
{
    try {
        if(!std::filesystem::is_directory(std::filesystem::path("sdfsdf"))){
            throw std::filesystem::filesystem_error("ERROR14", std::error_code());
        }
    }
    catch (std::filesystem::filesystem_error &e) {
         // if (e.code == success)
        {
            return e;
        }
    }
}

int main()
{
    foo();
}

例外がない場合にそのような「e」を返す方法(つまり、スロー)

4

2 に答える 2

0

CppReferenceには、 のコンストラクターが記載されていstd::filesystem::filesystem_errorます。

それらの1つを使用してください:

throw std::filesystem::filesystem_error("Error14", std::error_code());

おそらく、より良いメッセージとエラーコードを入れたいと思うでしょう:-)

于 2020-10-24T14:22:59.300 に答える