解析JSON时无法抛出JSONexception

时间:2016-06-20 18:03:07

标签: android

我想在我的Android应用中从网址获取一些数据。我正在使用凌空库来获取/发布请求。以下是获取网址内容的代码:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(  Request.Method.GET, R.string.login, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                    Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
                                    startActivity(intent);
                                    finish();
                            } catch (JSONException e) {
                                e.printStackTrace();
                                Log.e("ex","Exception Caught! "+e);
                            }
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                        }
                    });
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(jsonObjectRequest);

但是我在JSONException中遇到以下错误:

  

异常org.json.JSONexception永远不会在相应的try块

中抛出

2 个答案:

答案 0 :(得分:3)

仅在JSON操作上抛出

org.json.JSONexception。您的try块没有JSON操作,因此永远不会抛出此错误。

org.json.JSONexception更改为java.lang.Exception或完全删除try-catch块。

try {
    Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
    startActivity(intent);
    finish();
} catch (Exception e) {
    e.printStackTrace();
    Log.e("ex","Exception Caught! "+e);
}

答案 1 :(得分:1)

由于您使用了JsonObjectRequest,因此不需要通常在StringRequest中看到的try-catch,您可以手动将String转换为JSONObject。

如果JsonObjectRequest中存在JSON解析错误,那么您可以在onErrorResponse

中处理