如何处理Windows Phone中的异常?

How to deal with exception in Windows Phone?

我在Windows Phone 8.1中有一个async方法,需要从网上下载一个文件。当然,如果没有互联网连接,它是做不到的。我该如何面对这个问题。方法是这个:

public async Task<string> getJson(Uri url)
    {
        if (NetworkInterface.GetIsNetworkAvailable())
        {
            HttpClient client = new HttpClient();
            string jsonString = await client.GetStringAsync(url);
            return jsonString;
        }
        else
        {
            await new MessageDialog("No internet connection is avaliable. Please check it !").ShowAsync();
            return "";
        }
    }

我应该在调用 getJSON(Uri url) 之前添加互联网连接检查吗?方法 ?在这种情况下,我必须在每个方法中重新编写这些代码行,这需要 getJson(Uri url);我不想这样做。

更新

我写的代码不起作用,因为应用程序在没有 Internet 连接的情况下崩溃。我不喜欢的解决方案是这样的:

private async void change(object sender, RoutedEventArgs e)
    {

        if (NetworkInterface.GetIsNetworkAvailable())
        {
            Frame.Navigate(typeof("Page with async method"));
        }
        else
        {
             await new MessageDialog("No internet connection is avaliable. Please check it !").ShowAsync();
        }

    }

检查网络连接正常,但检查完成后仍然可能立即不可用。

正确的解决方法是捕获异常并处理:

public async Task<string> getJson(Uri url)
{        
    bool error = false;
    if (NetworkInterface.GetIsNetworkAvailable())
    {         
       try
       {
           HttpClient client = new HttpClient();
           string jsonString = await client.GetStringAsync(url);
           return jsonString;
       }
       catch(Exception) // a more specific exception would be better
       {
           error = true;
       }
    }
    else
    {
        error = true;     
    }

    if (error)
    {
        await new MessageDialog("No internet connection is avaliable. Please check it !").ShowAsync();
        return "";
    }
}

我个人会在更高级别处理异常(即 getJson() 的调用者)