尝试从 .NET 3.5 获取异常代码但未成功
Posted
技术标签:
【中文标题】尝试从 .NET 3.5 获取异常代码但未成功【英文标题】:Trying to get exception code from .NET 3.5 without success 【发布时间】:2019-08-02 17:48:51 【问题描述】:我有一个网络服务。在一个方法中,我有一个 try-catch 块。然后在里面,我想获取异常代码。
我在下面尝试过:
catch (Exception e)
var w32ex = e as Win32Exception;
if(w32ex == null)
w32ex = e.InnerException as Win32Exception;
if(w32ex != null)
int code = w32ex.ErrorCode;
// do stuff
// do other stuff
...这已解释为here,但在我的情况下,它不起作用:当将异常 e 转换为 Win32Exception 时,我得到一个空值,一旦我得到一个空值,我尝试将 e.InnerException
转换为 @987654326 @ 我也得到了 null。
下面是我的例外截图:
如您所见,有一个HResult
代码。
【问题讨论】:
可能是异常不是 Win32Exception 类型(或派生自)? @hormberg 抛出的异常属于 System.Web.Services.Protocols.SoapException 类型。如何从中获取错误代码? var v = e.HResult; @hormberg 我正在使用 NET 3.5,但无法访问它。我知道这在 NET 4.5 及更高版本中是可能的...... 【参考方案1】:根据您的屏幕截图,您正在捕获 SoapException 的实例:https://docs.microsoft.com/en-us/dotnet/api/system.web.services.protocols.soapexception?view=netframework-3.5 此类不继承自 Win32Exception,这就是类型转换运算符返回 null 的原因。您应该能够直接从基础 Exception 类中获取 HResult 字段(根据文档,即使在 .Net 3.5 中):
catch (Win32Exception w32ex)
// Put your current code here...
catch (Exception ex)
int hResult = ex.HResult;
// Handle HRESULT error code here...
【讨论】:
你能提供一个关于如何获取错误代码的代码 sn-p 吗?我试过没有成功。 @user1624552 为什么需要这个“错误代码”?你想在这里捕捉什么? 因为只有在抛出这种类型的错误时我才需要做一些事情。异常可以相同,但错误代码可以不同。所以我需要准确识别错误代码是什么。 .. 是的,你是对的,抛出的异常是 System.Web.Services.Protocols.SoapException 类型,那么我怎样才能从那里获取错误代码? @user1624552 我在答案中添加了代码 sn-p。以上是关于尝试从 .NET 3.5 获取异常代码但未成功的主要内容,如果未能解决你的问题,请参考以下文章
Form.Owner 从 .NET 3.5 中的单独线程设置
尝试从asp.net web api调用获取响应时android studio中的超时异常
mysqli execute() 成功执行但未获取记录[重复]