我有一个Web服务。在一个方法中,我有一个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时,我得到一个null,并且一旦得到一个null,我就尝试转换{{1} }与e.InnerException
一样,我也得到null。
以下是我的例外的屏幕截图:
如您所见,这里有一个Win32Exception
代码。
答案 0 :(得分:0)
根据您的屏幕截图,您正在捕获 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...
}