我希望能够捕获并识别属于此特定类型的异常,然后返回适当的错误消息。在catch块中执行此操作的正确方法是什么?
答案 0 :(得分:6)
您需要捕获的异常是HttpRequestException
专门,其中包含一个InnerException
和一个WebException
属性,其中Status
是一个WebExceptionStatus.NameResolutionFailure
值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");
}
。
幸运的是,使用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
{