C#中如何获取异常错误码try{objectresult=processClass.InvokeMethod("Create",methodArgs);}catch(Exceptione){//这里我是希望得到一个错误码。当我调用上面的WMI方法时,我应该得到拒绝访问。在我的catch块中,我想确保抛出的异常确实是AccessDenied。有什么办法可以得到它的错误代码吗?拒绝访问的Win32错误代码是5。我不想在错误消息中搜索拒绝字符串或类似内容。谢谢试试这个来检查异常和内部Win32Exception派生异常。catch(Exceptione){varw32ex=easWin32Exception;如果(w32ex==null){w32ex=e.InnerException作为Win32Exception;}if(w32ex!=null){intcode=w32ex.ErrorCode;//dostuff}//dootherstuff}在注释中,您确实需要查看抛出的实际异常以了解您可以做什么,在这种情况下,特定的捕获优先于捕获异常。类似于:catch(BlahBlahExceptionex){//dostuff}System.Exception也有一个HRESULTcatch(Exceptionex){intcode=ex.HResult;您应该查看抛出异常的成员,尤其是.Message和.内部异常。我还会查看InvokeMethod的文档是否告诉您它是否抛出比Exception更专业的Exception类-如@Preet建议的Win32Exception。捕获和查看Exception基类可能不是特别有用。我建议您使用来自异常对象的MessageProperte,如下面的代码}catch(Exceptione){//使用Console.Write(e.Message);来自控制台应用程序//并使用MessageBox.Show(e.Message);来自WindowsForm和WPF应用程序}基于PreetSangha的解决方案构建,以下内容应该安全地涵盖您正在使用可能存在多个内部异常的大型解决方案的程序的情况。尝试{objectresult=processClass.InvokeMethod("Create",methodArgs);}catch(Exceptione){//在这里我希望得到一个错误代码。if(ExceptionContainsErrorCode(e,10004)){//执行所需的操作}}...privateboolExceptionContainsErrorCode(Exceptione,intErrorCode){Win32ExceptionwinEx=easWin32Exception;如果(winEx!=null&&ErrorCode==winEx.ErrorCode)返回真;if(e.InnerException!=null)returnErrorCode(Containse.InnerException,ErrorCode);返回假;这段代码已经过单元测试。通过在其自己的块中管理每个预期的异常类型,当涉及到异常处理时,我并不过分关注需要欣赏和实施良好实践。另一种方法是直接从异常类中获取错误代码。例如:以上是C#学习教程:C#如何获取异常错误码分享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——catch(Exceptionex){if(ex.InnerExceptionisServiceResponseException){ServiceResponseExceptionsrex=ex.InnerExceptionasServiceResponseException;字符串错误代码=srex.ErrorCode.ToString();}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
