我有一些代码可以在某些(难以重现)情况下引发 boost::filesystem::filesystem_error 异常。
我设置了异常处理程序,我想测试异常处理程序的正确行为。
如果我不是以 root 身份运行,我可以通过在无法访问的目录中打开文件来强制这些异常。
但是,我们的构建管道以 root 身份运行测试(无论好坏),在这种情况下,权限检查将被绕过,并且不会引发异常。
当代码以 root 身份运行时,如何强制 boost::filesystem 抛出异常?
这与其说是关于 boost 或 C++ 的问题,不如说是……
这取决于您的代码在做什么。如果您要打开现有文件,但不创建它(因为它是需要存在的数据文件,而不是缓存文件或其他文件),则可以不存在它。
如果您创建的文件不存在,但不在其所在的目录中,请删除该目录。
如果您要创建文件和目录,只需创建一个具有目录名称的文件即可 - 大多数软件不会删除该文件来为目录腾出空间,而是会失败。
等等。看看你的软件做了什么,然后找个地方搞砸了。