对于JSONArray解析:在LOOP内部TRY或在TRY内部循环?

Has*_*lah 4 java json

我有一个JSONArray.我想将其解析为JSONObject.所以Loop和try-catch是必须的.
愚蠢的问题是:我应该在TRY中使用FOR循环还是反向?真的是重要还是两者都一样?
请告诉我最佳实践(如果两者不相同).

TRY中的FOR循环:

try {
        for(i=0; i<jsonArray.length(); i++){
            jsonObject = jsonArray.getJSONObject(i);
            //do something
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)


循环中的TRY

for(i=0; i<jsonArray.length(); i++){

        try {
            jsonObject = jsonArray.getJSONObject(i);
            //do something
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
Run Code Online (Sandbox Code Playgroud)

哪个更好?

San*_*Ved 5

这取决于您对数据完整性的认真态度.

  • 第一个示例将运行循环,直到发生异常,并且一旦执行,将调用catch块并且循环将不再运行.

  • 但是,第二个示例将进入try块并尝试执行代码,如果存在异常,则调用catch块并排除异常.但是循环没有结束,下一次迭代将在之后运行.

这是一个例子.我们会考虑当i = 4时会发生一些异常

try {
    for(i=0; i<10; i++){
        System.out.println("" + i);
    }

} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

输出 -

0
1
2
3
Exception
Run Code Online (Sandbox Code Playgroud)

for(i=0; i<10; i++){

    try {
        System.out.println("" + i);
    } catch (Exception e) {
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

产量

0
1
2
3
Exception
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)