gpt4 book ai didi

c# - 将参数异常转换为 HRESULT?

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:36 24 4
gpt4 key购买 nike

我正在开发一个供 Microsoft .NET 和 COM 组件使用的 Microsoft .NET 程序集。我正在编写托管代码,并且必须指出何时为类中的方法指定了不正确的参数。当出现参数异常时,我需要将控制权返回给 COM 组件并返回正确的错误。

假设代码是:

throw new ArgumentException("Invalid Argument");

我猜想代码会抛出一个新的 ArgumentException 对象,它可以被 Microsoft .NET 组件使用,并由 CLR 转换为 HRESULT 用于 COM 组件。托管代码将错误或异常事件指示为异常,而 COM 组件除外的十六进制错误代码称为 HRESULTs

我的问题是这个 ArgumentException 的十六进制值是多少?如果是COR_E_ARGUMENT or E_INVALIDARG,那么与指定的错误消息无关紧要吗?(这里是“无效参数”)

最佳答案

两者都是,COR_E_ARGUMENT和E_INVALIDARG具有相同的数值。使用 the Reference Source查看该类如何初始化其 HResult 属性值。单击 __HResults.COR_E_ARGUMENT 以查看 0x80070057,这是打包到 hresult 中的 Windows 的 ERROR_INVALID_PARAMETER 错误代码。您可以从 WinError.h SDK 头文件中获取 E_INVALIDARG 的错误代码,相同的值。

这取决于客户端代码如何获取错误的文本描述,希望它使用 IErrorInfo 来获取 Exception.Message 属性。但如果它没有,那么它使用 FormatMessage() 的可能性很小。生成 Windows 错误代码描述“参数不正确”。

关于c# - 将参数异常转换为 HRESULT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886241/

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