2016-01-17 84 views
0

我正在導航windows phone 8.1應用程序。我使用try catch塊進行錯誤處理。只要我發送和無效的輸入到服務器,如「dfkdsf」,它會引發一個運行時異常錯誤,聲明無效參數,但catch塊不處理它。我哪裏錯了?無效的參數異常

public async void GetSearchAPIData() 
    { 
     try 
     { 
      JArray arr = JArray.Parse(await responce.Content.ReadAsStringAsync()); 

      foreach (JObject obj in arr.Children<JObject>()) //exception thrown here! 
      { 
       noOfResult++; 
       JsonSerializerSettings settings = new JsonSerializerSettings(); 
       settings.NullValueHandling = NullValueHandling.Ignore; 
       settings.MissingMemberHandling = MissingMemberHandling.Ignore; 
       var rcvdData = JsonConvert.DeserializeObject<LocationData>(obj.ToString(), settings); 
       //adding recieved data into a list.. 
       RcvdSearchDataList.Add(rcvdData); 
      } 
      //changing current status on status bar.. 
      statusBar.ProgressIndicator.Text = "Found " + noOfResult + " results for " + "\"" + UserRequestedLocation + "\""; 
      statusBar.ProgressIndicator.ProgressValue = 0; 

      if (RcvdSearchDataList.Count == 0) 
      { 
       statusBar.ProgressIndicator.Text = "We're Sorry! No matches found..."; 
       statusBar.ProgressIndicator.ProgressValue = 0; 
      } 
      else 
      { 
       ResultListView = new ListView() { Margin = new Thickness(20), VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Stretch }; 
       ResultDataGrid.Children.Add(ResultListView); 
       for (int i = 0; i < RcvdSearchDataList.Count; i++) 
       { 
        UpdateSearchTextData(i); 
       } 
      } 
      UpdateSearchMapData(RcvdSearchDataList); 
     } 
     catch(Exception e) 
     { 
      string errorMessage = string.Format(
        "An error occurred while looking for the requested location.\r\n\r\n{0:x}\r\n\r\n{1}", "HRESULT: " + e.HResult, "Message: " + e.Message); 
      ErrorDialog.Content = errorMessage; 
      await ErrorDialog.ShowAsync(); 
     } 
    } 

的JArray ARR具有從我不能處理

+1

做這一行responce.Content.ReadAsStringAsync()產生一個新的線程?並在該線程trown異常?....你可以發佈堆棧跟蹤? – Viru

+0

顯示你的model.or或檢查你的db列,可能參數名稱不匹配。我相信 –

+0

@PankajGupta模型是完美的。一切工作正常,如果這是一個理想的情況下,像某人搜索德里或如果他拼錯delhi德爾福或什麼的,但我只是讓我的應用程序處理例外,如果用戶試圖玩耍。 –

回答

0

註釋行settings.NullValueHandling = NullValueHandling.Ignore服務器{[]}返回的值。 您告訴Json序列化程序在deserilization期間忽略空值。 所以當你得到空的Json repsonse時,它並沒有反序列化它,並以某種方式導致了無效的參數異常。

+0

感謝您的答案..我本來就是在問這個事情本身..它是如何通過一個無效的參數異常造成的。另外,如果我告訴Json序列化程序不要忽略空值,那麼如果API的響應爲200 OK,但響應中的某些值在將它們存儲在類中時爲空,則不會導致問題 –

相關問題