捕获和识别HttpRequestException的正确方法是什么?"远程名称无法解析:'www.example.com'"?

Nim*_*hew 1 c# asp.net exception-handling

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

spe*_*der 6

您需要捕获的异常是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");
}
Run Code Online (Sandbox Code Playgroud)