Как правильно перехватить и идентифицировать HttpRequestException «Удаленное имя не может быть разрешено:« www.example.com »»? - PullRequest
0 голосов
/ 29 июня 2018

Я хочу иметь возможность перехватывать и идентифицировать исключения, относящиеся к этому конкретному типу, а затем возвращать подходящее сообщение об ошибке. Как правильно сделать это в блоке catch?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Исключением, которое вам нужно перехватить, является HttpRequestException , в частности , с InnerException, который является WebException и имеет свойство Status со значением WebExceptionStatus.NameResolutionFailure.

К счастью, используя C # 6.0 фильтры исключений , теперь легко поймать только исключение, которое удовлетворяет этим конкретным критериям:

var hc=new HttpClient();
try
{
    (await hc.GetStringAsync("https://www.googggle.com"));

}
catch(HttpRequestException ex) 
  when ((ex.InnerException as WebException)?.Status ==
           WebExceptionStatus.NameResolutionFailure)
{
    //yay. localization-proof
    Console.WriteLine("dns failed");
}
0 голосов
/ 29 июня 2018

Сначала перехватите исключение HttpRequestException в блоке перехвата

catch (HttpRequestException ex){}

Тогда, если вам нужно точно идентифицировать сообщение, используйте ex.Message

if (ex.Message.StartsWith("The remote name could not be resolved:"))
{
     //do the rest
{
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...