C++ boost::filesystem::存在崩溃

C++ boost::filesystem::存在崩溃,c++,boost,boost-filesystem,C++,Boost,Boost Filesystem,我使用的是boost 1.52,当我试图从网络驱动器获取一个我没有读取权限的文件时。使用boost::filesystem::exists(fileName) 有没有比在每个地方都做try,catch更好的工作 我现在已切换回旧代码: bool FileExists(const char* fileName) { struct stat my_stat; return (stat(fileName, &my_stat) == 0); } //boost Exists

我使用的是boost 1.52,当我试图从网络驱动器获取一个我没有读取权限的文件时。使用
boost::filesystem::exists(fileName)

有没有比在每个地方都做
try,catch
更好的工作

我现在已切换回旧代码:

bool FileExists(const char* fileName)
{
    struct stat my_stat;
    return (stat(fileName, &my_stat) == 0);
}

//boost Exists throws exception if there are no permissions for share folder
bool FileExists(const std::string& fileName)
{
    return FileExists(fileName.c_str());
}
使用不会抛出的工具

bool exists(const path& p, system::error_code& ec) noexcept;

但是,您需要检查输出参数,因此这可能比捕获异常需要更多的工作。这取决于您要完成的任务。

我只是想获取一个配置文件。在开始解析之前,我想检查它是否存在,以及我是否有权从网络驱动器中读取它。你意识到这个想法的内在竞争条件吗?该文件可以在exists返回后但在您分析它之前删除。是的,但是它是一个简单的系统。用户也意识到了这个问题。我想在这里讨论的另一个问题是权限。您不能只使用您现在使用的函数,用
boost::filesystem::exists
替换
stat
,以及必要的异常处理吗?那么你就不必在每个地方都使用try-catch。它在那个函数中是孤立的。