【发布时间】:2021-08-07 16:45:20
【问题描述】:
我有以下代码:
for (const auto& x : std::filesystem::directory_iterator(dir)) {
// do stuff with x
}
dir 可能不存在,我想将这种情况视为目录为空。我似乎想不出一个好的选择。
- 如果我用
try/catch保护所有内容,那么我也会捕获迭代代码异常,我不希望这样。 - 如果我将
std::filesystem::directory_iterator构造向上移动并用try/catch保护它,它会变得冗长,我将不得不重新抛出所有其他异常(它不会搞砸堆栈跟踪等?)。 - 如果我使用
directory_iterator的非抛出构造函数,我将不得不抛出std::error_code以解决其他错误。我不知道该怎么做。
【问题讨论】:
-
@JeJo 在代码方面可能更优雅,但它允许比赛。这不太可能发生,但我希望我的语言能够让做正确的事情变得容易。
标签: c++ std-filesystem