2016-01-17 82 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,但响应中的某些值在将它们存储在类中时为空,则不会导致问题 –

相关问题