【发布时间】:2021-09-18 11:33:17
【问题描述】:
我正在开发一个 C++ UWP / WinRT 应用程序, 并且想测试给定的字符串是否代表现有文件夹的路径,并且我想在不依赖捕获异常的情况下做到这一点。动机在底部。
查看UWP Storage API,似乎沿着这些路线唯一不使用异常来传达成功的例程是TryGetItemAsync(),不幸的是,这需要有一个StorageFolder,这是我唯一的方法'我们已经看到从完整路径字符串中获取StorageFolder 是通过GetFolderFromPathAsync(),它使用异常来传达失败。
动机:这只是一个傻瓜。即使被捕获,异常也会被记录到输出中并使它看起来像是失败了,这会减慢开发速度。也许我需要以更积极的方式抓住它。
编辑以包含将库存 C++ 代码与 UWP 进行比较的示例:
void cppTestFolder(const std::wstring path)
{
bool existsCpp = !!(std::ifstream(path));
bool existsUwp = UWP_Based_TestFolder(path);
LogW(std::wstring(L"folder path exists ? CPP: ") + (existsCpp ? L"yes" : L"no ") + L" UWP: " + (existsUwp ? L"yes" : L"no ") + L" path: " + path);
}
...
cppTestFolder(L"C:\\Data");
cppTestFolder(L"C:\\Data\\no_such_folder");
...
and logging output: (minus the annoying exception messages I want to avoid)
folder path exists ? CPP: no UWP: yes path: C:\Data
folder path exists ? CPP: no UWP: no path: C:\Data\no_such_folder
【问题讨论】: