在WebClient方法中捕获异常的位置?

时间:2012-06-19 09:46:58

标签: json windows-phone-7 webclient

我正在开发连接服务并使用一些JSON数据的应用程序。消费很好(JSON.net摇滚),但我想知道我应该在哪里捕获异常错误并显示简单的MessageBox?试过几个地方,但我的应用程序仍然关闭。或者我应该根据包含错误标记的json响应来做到这一点?我认为正常的错误处理可能更容易,但现在我脑子里有空白点。

代码如下:

private void LoginLoginButton_Click(object sender, System.EventArgs e)
        {
            ((ApplicationBarIconButton)ApplicationBar.Buttons[0]).IsEnabled = false;
            ProgressOverlay.Show();
            GenerateLoginString();
            var w = new SharpGIS.GZipWebClient();

            Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted")
              .Subscribe(r =>
              {

                  var settings = IsolatedStorageSettings.ApplicationSettings;


                  var deserializedRootObject = JsonConvert.DeserializeObject<RootObject>(r.EventArgs.Result);

                  UserSettings us = new UserSettings()
                  {


                          first_name = deserializedRootObject.user.first_name,
                          last_name = deserializedRootObject.user.last_name,
                          user_id = deserializedRootObject.user_id,

                    };
                    settings.Add("UserSettings", us);
                    settings.Save();
              });
            w.DownloadStringAsync(new Uri(UserUri));
            w.DownloadStringCompleted += new DownloadStringCompletedEventHandler(w_DownloadStringCompleted);

        }

        void w_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
                NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

2 个答案:

答案 0 :(得分:0)

如果您的意思是要捕获Web客户端调用中发生的异常,那么它应该位于Error的{​​{1}}属性中。

DownloadStringCompletedEventArgs

答案 1 :(得分:0)

解决!

我在这种情况下使用了try和catch。完美的作品:)