2016-05-10 36 views
1

我有這樣一段代碼:JSONException沒有抓到

HJRestClient.post(path, params, new JsonHttpResponseHandler() { 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONObject response) { 

      try { 
       JSONArray array = response.getJSONArray("tags"); 
       if (adDetailViewAdapter != null) { 
        adDetailViewAdapter.setTags(array); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

它上線JSONArray array = response.getJSONArray("tags");崩潰,出現異常W/System.err: org.json.JSONException: No value for tags

雖然我已經爲捕捉異常編寫的代碼,這不是事情敗露,導致應用程序崩潰。

我有2個設備Samsung Galaxy Note 5與Android v6.0.1其中exception被成功捕獲。

另一個華爲伴侶7 Android v4.4.2其中exception沒有被捕獲並導致崩潰。

我還寫道:

catch (Exception exception) {} 

但它仍然是越來越墜毀。

任何幫助?

+0

把你的JSON響應也驗證 – Stallion

+0

如果你得到你的響應null比它會引發異常。在你的情況下,它看起來像你正在得到迴應,但你從你的迴應中獲取錯誤的標籤(價值)。 –

+0

你有沒有考慮過使用'optJSONArray'呢? :) –

回答

0

你應該是這樣的:

HJRestClient.post(path, params, new JsonHttpResponseHandler() { 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONObject response) { 
      try { 
       if(response!=null&&response.has("tags")){ 
        JSONArray array = response.getJSONArray("tags"); 
        if (adDetailViewAdapter != null) { 
         adDetailViewAdapter.setTags(array); 
        } 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 

希望這會幫助你。

+0

我寫了你的代碼,現在它崩潰了,但沒有顯示異常類型。 –

+0

@AbdullahUmer,編輯我的回答,請檢查 –

+0

嘿,謝謝你的幫助。事實證明,在使用標籤的網格適配器的代碼中存在一個錯誤。 Android工作室沒有顯示正確的異常,但Crashlytics顯示致命異常:java.lang.ClassCastException:android.widget.RelativeLayout $ LayoutParams不能轉換爲android.widget.AbsListView $ LayoutParams at android.widget.GridView.onMeasure(GridView。 java:1046) –