如果发生JSONException,则恢复for循环

时间:2015-05-06 07:48:37

标签: java json

我从foursquare解析json响应。有一些json对象丢失了所以我抓住了它。但是如果发生异常,你如何继续for循环;

if (length > 0) {
    for (int i = 0; i < length; i++) {
        JSONObject venueObject = venues.getJSONObject(i);

        String id = venueObject.getString("id");
        String name = venueObject.getString("name");

        JSONObject location = venueObject.getJSONObject("location");
        String lat = String.valueOf(location.getDouble("lat"));
        String lng = String.valueOf(location.getDouble("lng"));

        HashMap<String, String> venue = new HashMap<>();
        venue.put("id", id);
        venue.put("name", name);
        venue.put("lat", lat);
        venue.put("lng", lng);

        String address = "";
        try {
            JSONArray addressArray = location.getJSONArray("formattedAddress");
            address = addressArray.getString(i);
        } catch (JSONException j) {
            address = location.getString("country");
        } finally {
            venue.put("address", address);
            venueList.add(venue);

            //continue for loop somehow
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您不需要执行任何操作 - 如果抛出JSONException,则catch和finally块执行,代码继续执行,因此for循环继续。

但有一件事 - 如果您希望缺少某些JSON对象,最好在尝试访问它们之前进行检查,而不是访问它们并捕获异常。