我正在尝试使用
system("mkdir -p a/b/c/d")
用C++在linux中创建一个目录。我目前对C++的异常处理流程还不太了解。使用 try/catch 抛出异常的正确方法是什么?如果命令执行失败,我应该抛出什么异常?
最佳答案
Boost.Filesystem 更容易使用,更安全,而且定义明确。 (或 C++17 中的 <experimental/filesystem>
)。请使用此解决方案。
#include <boost/filesystem.hpp>
int main()
{
namespace fs = boost::filesystem;
fs::create_directories("/tmp/path/to/dir");
fs::create_directories("/dev/null");
}
<小时/>
返回值system
是实现定义的,但通常期望是被调用命令返回的状态代码。因此,如果您的命令返回 0
以外的内容它失败了。
#include <cstdlib>
#include <stdexcept>
int main()
{
if ( std::system("mkdir -p /tmp/path/to/dir") != 0 )
throw std::runtime_error("Could not create directory");
if ( std::system("mkdir -p /dev/null") != 0 )
throw std::runtime_error("Could not create directory");
}
关于c++ - 如何在 C++ 中使用 system() 抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46146097/