在C#中捕获COM异常的最佳实践是什么?

在C#中捕获COM异常的最佳实践是什么?,c#,exception,com,C#,Exception,Com,您能告诉我如何正确处理C#中的COM异常吗? 例如,我正在使用DirectorySearcher并获得COMException:服务器无法运行。我应该如何处理此异常?我可以为COMException编写一个处理程序,但是如何识别特定的异常类型呢?我应该检查异常消息还是检查异常消息HRESULT?您必须查找HRESULT,这是,因此是真正了解发生了什么的唯一方法。您可以使用和文章来解析HRESULT 示例: try { //Your code } catch(COMException ex

您能告诉我如何正确处理C#中的COM异常吗?
例如,我正在使用
DirectorySearcher
并获得
COMException:服务器无法运行
。我应该如何处理此异常?我可以为
COMException
编写一个处理程序,但是如何识别特定的异常类型呢?我应该检查异常消息还是检查异常消息
HRESULT

您必须查找
HRESULT
,这,因此是真正了解发生了什么的唯一方法。您可以使用文章来解析
HRESULT

示例:

try
{
    //Your code
}
catch(COMException ex)
{
    int error = ex.ErrorCode;

    //Conditions and error handling
}

基本上,
HRESULT
是一个32位整数,其中两个最高有效位描述消息的类型(成功、信息、警告、错误)。其他30位用于描述消息的其余部分。

ComException.ErrorCode属性与HResult属性相同。但它是公共的,因此您可以毫无问题地访问它。