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

时间:2018-06-29 09:43:25

标签: c# asp.net exception-handling

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

2 个答案:

答案 0 :(得分:6)

您需要捕获的异常是HttpRequestException 专门,其中包含一个InnerException和一个WebException属性,其中Status是一个WebExceptionStatus.NameResolutionFailurevar 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"); }

幸运的是,使用C#6.0 exception filters,现在很容易捕获仅满足以下特定条件的异常:

{{1}}

答案 1 :(得分:0)

首先,在catch块中捕获HttpRequestException

catch (HttpRequestException ex){}

然后,如果您需要仔细识别消息,请使用ex.Message

if (ex.Message.StartsWith("The remote name could not be resolved:"))
{
     //do the rest
{