gpt4 book ai didi

c# - IOException HResult 可能的值

转载 作者:行者123 更新时间:2023-11-30 19:25:59 24 4
gpt4 key购买 nike

我发现有时在 IO 操作中常见 IOException被抛出。我可以使用 Marshal.GetHRForException(Exception e)方法(找到 here )以确定具体的错误代码。之后,我想使用我的应用程序特定错误代码重新抛出异常,以便为用户提供一些提示,提示哪里出了问题。但是我无法找到 IOException 的可能 HResult 值列表。 .

我坚持的另一件事是,对于不同的 HResult 代码,根本原因可能相同 - 例如,0x8007052E0x80070569 - 都对应于 Logon failure: unknown user name or bad password.

我曾尝试搜索“IOException HResult 值”之类的内容,但对于将 IOException HResult 与人类可读错误(如 thisthis )进行映射没有什么特别之处。

我也看到了 question这里,很像,但是还是没有解决。

那么,关于 IOException HResults 值的文档在哪里?

最佳答案

通过使用 Marshal.GetHRForException(),您将 Windows 错误代码包装到 HResult 错误代码中。对于 IOException,它将始终是 Windows 错误号 + 0x80070000。 “8”表示错误,“7”表示它来自 Windows。您可以简单地使用 & 0xffff 再次恢复原始错误代码。

将结果转换回十进制,您将有很多地方可以找出错误代码的含义。我个人总是使用 WinError.h SDK 头文件。取决于您拥有的 VS 版本,大多数程序员会在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include 目录中找到它。

您还可以使用一个方便的实用程序,从 Visual Studio 命令提示符运行 errlook.exe。使其随时可用的一个好方法是将其添加到“工具”菜单。使用工具 + 外部工具,添加按钮,标题 =“错误查找”,“命令”= C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\errlook.exe。根据需要调整路径以匹配您的 VS 版本。

您现在还会发现错误代码并不相同。 0x80070569 & 0xffff = 0x569 = 1385。在 WinError.h 中搜索该错误代码会产生 ERROR_LOGON_TYPE_NOT_GRANTED,“登录失败:用户未被授予在此计算机上请求的登录类型”。

您可能遇到的 IOException 错误类型不受任何限制。 Windows 没有“异常规范”,只有最常见的错误代码列在特定 winapi 函数的 MSDN 文档中。很像 .NET 异常。许多 IOException 错误代码是由并非由 Microsoft 编写的驱动程序生成的,这是一种必要的邪恶。

关于c# - IOException HResult 可能的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com