首页 > 解决方案 > 捕获和识别 HttpRequestException“无法解析远程名称:'www.example.com'”的正确方法是什么?

问题描述

我希望能够捕获并识别属于此特定类型的异常,然后返回合适的错误消息。在 catch 块中执行此操作的正确方法是什么?

标签: c#asp.netexception-handling

解决方案


您需要捕获的异常是带有a 的HttpRequestException 特定InnerExceptionaWebException并且具有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");
}

推荐阅读