【发布时间】:2020-03-13 15:03:49
【问题描述】:
我似乎找不到可能传递到std::filesystem::copy 的ec 参数的错误代码列表。
cppreference.com 似乎表明错误代码是特定于操作系统的。
查看the Microsoft documentation(因为我对 Windows 错误代码特别感兴趣,但我确信其他操作系统的资源会有所帮助对于其他人)它看起来几乎是相同源文档的副本/粘贴,没有任何关于 Windows 特定的附加信息。
我的猜测是错误代码与here 列出的错误代码相同,但没有关于哪些与文件系统相关的信息,或者更具体地说是copy() 函数(超出有根据的猜测)。
是否有人有任何关于可能返回的潜在错误代码的资源,或者,如果我必须以艰难的方式执行此操作(并手动尝试检查不同的错误场景),我如何知道我是否有详尽的列表?
【问题讨论】:
-
MS 没有记录 WinAPI 函数的详尽列表 - 他们只是说调用
GetLastError。由于 C++ 运行时库实现最终必须调用 WinAPI 级别,我认为不可能获得完整的错误列表。作为示例,请参阅CreateFileWdocs.microsoft.com/en-gb/windows/win32/api/fileapi/… "的文档...如果函数失败,则返回值为 INVALID_HANDLE_VALUE。要获取扩展的错误信息,请调用 GetLastError..."跨度> -
如果您有特定的用例,您希望根据错误代码执行不同的处理,您可以测试这些。然而,根据我的经验,这些很少见。例如,对于未找到文件,您将采取哪些不同的措施;拒绝访问;没有空间;网络故障等?
-
您打算如何处理该错误?
std::error_code设计背后的全部意义在于,即使您对各个错误值一无所知,您仍然可以执行合理的错误处理。 -
似乎没有任何关于如何处理错误值的信息(尤其是在我的用例中,我没有使用异常),除了知道出了什么问题。例如,我什至不确定如何检查函数是否因为目标路径中已经存在文件而失败。所以谢谢@ComicSansMS,你的答案正是我所需要的!我也一定会看看那篇博文
标签: c++ error-code std-filesystem