stu*_*bax 2 .net c# error-handling ioexception hresult
我发现有时在IO操作中会抛出常见的IOException.我可以使用Marshal.GetHRForException(异常e)方法(在这里找到)来确定特定的错误代码.之后,我想使用我的应用程序特定的错误代码重新抛出异常,以便向用户提供一些错误的提示.但我无法找到IOException的可能HResult值列表.
我坚持的另一件事是,对于不同的HResult代码,根本原因可能是相同的 - 例如,0x8007052E和0x80070569 - 都对应于Logon failure: unknown user name or bad password.
我试图搜索类似"IOException HResult values"之类的东西,但是没有什么特别的用于映射IOException HResult与人类可读的错误(像这样或这样).
我也在这里看到了一个非常相似的问题,但仍然没有解决方案.
那么,有关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未编写的驱动程序生成的.
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |