ловить исключение из boost :: filesystem :: is_directory - PullRequest
8 голосов
/ 14 июля 2011

В настоящее время я отлавливаю ошибки в boost :: filesystem :: is_directory и показываю ошибку пользователю, вызывая "what ()" для исключения. Это дает причину сбоя, но ошибка странная для пользователя. Например:

boost :: filesystem :: is_directory: доступ запрещен

Как я могу уловить ошибку форсирования и выяснить, какова реальная причина, чтобы я мог показать более приятное сообщение об ошибке?

1 Ответ

18 голосов
/ 14 июля 2011

Под «более приятным сообщением об ошибке» подразумевается что-то вроде

#include <iostream>
#include <boost/filesystem.hpp>
int main()
{
    boost::filesystem::path p("/proc/1/fd/1");
    try {
       boost::filesystem::is_directory(p);
    } catch(const boost::filesystem::filesystem_error& e)
    {
       if(e.code() == boost::system::errc::permission_denied)
           std::cout << "Search permission is denied for one of the directories "
                     << "in the path prefix of " << p << "\n";
       else
           std::cout << "is_directory(" << p << ") failed with "
                     << e.code().message() << '\n';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...