Исключением, которое вам нужно перехватить, является 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");
}