@hauptling

Как возвращать ошибку в std::filesystem?

Например, вот так я делаю с использование 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();
    // далее обработка принятого сообщения
}


как сделать нечто подобное, но с возвратом ошибок от std::filesystem, я имею ввиду

std::filesystem::filesystem_error
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
gbg
@gbg
Баянист. Тамада. Услуги.
Например, есть вот такая дописка на https://en.cppreference.com/w/cpp/filesystem/files...
In order to ensure that copy functions of filesystem_error are noexcept, typical implementations store an object holding the return value of what() and two std::filesystem::path objects referenced by path1() and path2() respectively in a separately-allocated reference-counted storage.

Currently the MS STL implementation is non-conforming: objects mentioned above are stored directly in the filesystem object, which makes the copy functions not noexcept.


из которой следует, что объект исключения не стоит столь вольно копировать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы