将参数异常转换为 HRESULT?
Convert argument exception to HRESULT?
我正在开发供 Microsoft .NET 和 COM 组件使用的 Microsoft .NET 程序集。我正在编写托管代码,并且必须指出何时为 class 中的方法指定了不正确的参数。当发生参数异常时,我需要 return 将控制权返回给 COM 组件并给出正确的错误。
假设密码是:
throw new ArgumentException("Invalid Argument");
我猜代码会抛出一个新的 ArgumentException
对象,它可以被 Microsoft .NET 组件原样使用,并由 CLR
转换为 HRESULT
for [=14] =] 组件。托管代码将错误或异常事件表示为异常,而 COM
组件除外的十六进制错误代码称为 HRESULTs
.
我的问题是 ArgumentException
的十六进制值是多少?
如果是COR_E_ARGUMENT或者E_INVALIDARG,
那么跟指定的错误信息没有关系吗?(这里是"Invalid Argument")
都是,COR_E_ARGUMENT和E_INVALIDARG的数值相同。使用 the Reference Source 查看 class 如何初始化其 HResult 属性 值。单击 __HResults.COR_E_ARGUMENT 可以看到 0x80070057,这是 Windows' ERROR_INVALID_PARAMETER
错误代码打包到 hresult 中。您可以从WinError.h SDK头文件中获取E_INVALIDARG
的错误代码,相同的值。
这取决于客户端代码如何获取错误的文本描述,希望它使用 IErrorInfo 来获取 Exception.Message 属性。但如果它没有,那么它使用 FormatMessage() 的可能性很小。这会产生 Windows 错误代码描述,"The parameter is incorrect"。
我正在开发供 Microsoft .NET 和 COM 组件使用的 Microsoft .NET 程序集。我正在编写托管代码,并且必须指出何时为 class 中的方法指定了不正确的参数。当发生参数异常时,我需要 return 将控制权返回给 COM 组件并给出正确的错误。
假设密码是:
throw new ArgumentException("Invalid Argument");
我猜代码会抛出一个新的 ArgumentException
对象,它可以被 Microsoft .NET 组件原样使用,并由 CLR
转换为 HRESULT
for [=14] =] 组件。托管代码将错误或异常事件表示为异常,而 COM
组件除外的十六进制错误代码称为 HRESULTs
.
我的问题是 ArgumentException
的十六进制值是多少?
如果是COR_E_ARGUMENT或者E_INVALIDARG,
那么跟指定的错误信息没有关系吗?(这里是"Invalid Argument")
都是,COR_E_ARGUMENT和E_INVALIDARG的数值相同。使用 the Reference Source 查看 class 如何初始化其 HResult 属性 值。单击 __HResults.COR_E_ARGUMENT 可以看到 0x80070057,这是 Windows' ERROR_INVALID_PARAMETER
错误代码打包到 hresult 中。您可以从WinError.h SDK头文件中获取E_INVALIDARG
的错误代码,相同的值。
这取决于客户端代码如何获取错误的文本描述,希望它使用 IErrorInfo 来获取 Exception.Message 属性。但如果它没有,那么它使用 FormatMessage() 的可能性很小。这会产生 Windows 错误代码描述,"The parameter is incorrect"。