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

3

请问如何正确处理C#中的COM异常?例如,我正在使用DirectorySearcher,并遇到了COMException:服务器未运行。我应该如何处理这种异常?我可以编写一个COMException处理程序,但是我如何确定特定的异常类型?我应该检查异常消息还是HRESULT


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

1
你必须寻找 HRESULT,它是异常实例的 错误代码,因此这是了解发生了什么的唯一方式。你可以使用 这篇文章这篇文章 来解密 HRESULT
try
{
    //Your code
}
catch(COMException ex)
{
    int error = ex.ErrorCode;

    //Conditions and error handling
}

基本上,HRESULT是一个32位整数,其中最高的两个位描述了它是什么样的消息(成功、信息、警告、错误)。其他30位用于描述其余的消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接