gpt4 book ai didi

.net - .NET 中 COMException HRESULT 错误代码的符号名称

转载 作者:行者123 更新时间:2023-12-02 02:31:41 25 4
gpt4 key购买 nike

我希望能够在我的 .NET 代码中使用 COM 组件返回的 HRESULT 的标准符号名称。例如,我希望能够编写如下代码:

try {
someComObject->DoSomething();
}
catch (COMException ex) {
if (ex.ErrorCode == E_FAIL) {
HandleFail();
}
else if (ex.ErrorCode == E_OUTOFMEMORY) {
HandleOutOfMemory();
}
else {
HandleComError(ex.ErrorCode);
}
}

但是,我在 .NET 框架中找不到任何地方定义了 E_FAIL、E_OUTOFMEMORY、E_UNEXPECTED 等符号。对于 native Win32 应用程序,可以从 获取定义(参见 http://msdn.microsoft.com/en-us/library/aa378137(VS.85).aspx )。

我当然可以自己定义它们,无论我在哪里需要它们,就像这样:

int E_FAIL = unchecked((int)0x80004005L);

但如果可用的话,我更愿意从标准位置获取定义。我想我曾在某处找到它们的定义,但我的 MSDN 搜索现在找不到它们。

.NET 库中是否有一组这样的定义?

最佳答案

我认为框架本身没有。也许你找到了这个list at pinvoke.net .不要担心值的变化。 C 头文件中的值被编译到应用程序中,因此在不破坏现有的每个 COM 应用程序的情况下不能更改它们。

此外,您不会收到 E_OUTOFMEMORYCOMException。这将生成一个 OutOfMemoryExcetpion。运行时会将它知道的 HRESULTS 映射到有意义的异常。查看mapping definition在 MSDN。

关于.net - .NET 中 COMException HRESULT 错误代码的符号名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3593140/

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