没有捕获到JSONException

时间:2016-05-10 11:33:45

标签: android 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崩溃,Android v6.0.1

虽然我编写了用于捕获异常的代码,但它并没有被捕获并导致应用程序崩溃。

我有2台设备使用exception的三星Galaxy Note 5成功捕获了Android v4.4.2

另一个exception的华为Mate 7,catch (Exception exception) {} 未被抓住并导致崩溃。

我还写道:

<Page Name="Install">
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">Currently installed version:</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">CURRENT VERSION</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">Version to be installed:</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">#(loc.InstallVersion)</Text>
    <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
    <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>

但它仍在崩溃。

任何帮助?

1 个答案:

答案 0 :(得分: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();
            }

        }
    });

希望这会对你有所帮助。