Попытка получить код исключения из .NET 3.5 безуспешно - PullRequest
0 голосов
/ 12 марта 2019

У меня есть веб-сервис.В методе у меня есть блок 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   
}

..., что объясняется здесь , но в моем случае, это не работает: при приведении исключения e к Win32Exception я получаю значение NULL, а также, как только получаю NULL, и пытаюсь разыграть e.InnerException как Win32Exception, я также получаю NULL.

Ниже снимка экраназа моим исключением:

enter image description here

Как видите, есть код HResult.

1 Ответ

0 голосов
/ 12 марта 2019

Согласно вашему скриншоту, вы ловите экземпляр SoapException : https://docs.microsoft.com/en-us/dotnet/api/system.web.services.protocols.soapexception?view=netframework-3.5 Этот класс не наследуется от Win32Exception , поэтому оператор приведения типавозвращает ноль .Вы должны иметь возможность получить HResult поле прямо из базового Исключения класса (даже в .Net 3.5, согласно документации):

catch (Win32Exception w32ex)
{  
    // Put your current code here...
}
catch (Exception ex)
{
    int hResult = ex.HResult;
    // Handle HRESULT error code here...   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...