2012-06-19 6 views
0

서비스에 연결하고 일부 JSON 데이터를 사용하는 앱을 개발 중입니다. 소비 (JSON.net 바위) 위대한 작품을하지만 난 예외 오류 및 간단한 MessageBox 표시를 잡아야하는지 궁금해? 몇 곳에서 시도했지만 여전히 내 앱이 닫힙니다. 아니면 오류 태그가 포함 된 json 응답을 기반으로해야합니까? 나는WebClient 메서드에서 예외를 catch 할 위치?

코드는 아래와 같습니다 .. 일반적인 오류 처리를 쉽게 할 수 있다고 생각하지만, 지금 내 마음에 빈 자리가 있습니다

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)); 
     } 

답변

0

당신이 당신의 웹 클라이언트에서 발생하는 예외를 잡으려면 의미하는 경우 전화를 걸면 Error 속성이 DownloadStringCompletedEventArgs이어야합니다.

void w_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 
    if(e.Error != null) 
    { 
     MessageBox.Show("An error occurred!"); 
    } 
    else 
    { 
     NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
    } 
} 
+0

나는 이것을 시도했다. 그러나 오류가 다시 나타납니다. 그리고 UserSettings 객체를 채울 수없는 순간에 나타납니다. 시나리오는 다음과 같습니다. 로그인 데이터가 괜찮 으면 UserSettings라는 객체 호출을 얻습니다. 오류가없는 한 json 항목을 가져옵니다. "error" – dargod

+0

그래서 내가 어떤 결과를 얻었는지 알 때 예외를 잡으려고합니다. 도망 – dargod

0

해결!

이 경우 try and catch를 사용했습니다. 완벽한 작품 :)

관련 문제