从boost :: filesystem :: is_directory中捕获异常

War*_*pin 8 c++ boost exception-handling

我目前正在从boost :: filesystem :: is_directory中捕获错误,并通过在异常上调用"what()"向用户显示错误.这给出了失败的原因,但错误对用户来说很奇怪.例如:

boost :: filesystem :: is_directory:访问被拒绝

如何捕获增强错误并找出实际原因是什么,这样我可以显示更好的错误消息?

Cub*_*bbi 19

通过"更好的错误消息",你的意思是什么

#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';
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:您可能需要捕获boost :: filesystem :: wfilesystem_error是您指定的路径使用wchar_t* (2认同)