为什么json解析中的每个字段都需要try catch

时间:2017-03-20 22:57:34

标签: java

我看到一个同事在Java中反序列化json对象的旧方法,其中json被作为字符串反序列化并传递数组中的值。我对这段代码不了解的原因是为什么每个字段都添加了try和catch方法,为什么我们不能有一个try和catch因为所有catch都捕获json异常并将responseArray [0]赋值给它1。 这是代码:

String[] responseArray = new String[4];
            Arrays.fill(responseArray, "");
            try {


                final JSONObject response1 = new JSONObject(response);

                try{
                    responseArray[0] = response1.getJSONObject("body")
                        .getJSONObject("responseStatus").getString("estado");
                }
                catch (JSONException e) {
                    responseArray[0] = "1";
                    e.printStackTrace();
                }
                if(!responseArray[0].equalsIgnoreCase("0")){
                try{
                    responseArray[1] = response1.getJSONObject("body")
                        .getJSONObject("responseStatus")
                        .getString("codigoRespuesta");
                }
                catch (JSONException e) {
                    responseArray[0] = "1";
                    e.printStackTrace();
                }
                try{
                    responseArray[2] = response1.getJSONObject("body")
                        .getJSONObject("responseStatus")
                        .getString("descripcionRespuesta");
                }
                catch (JSONException e) {
                    responseArray[0] = "1";
                    e.printStackTrace();
                }
                }
                try{
                    responseArray[3] = response1.getJSONObject("body")
                        .getJSONObject("responseData").getLong("esValido")+"";
                }
                catch (JSONException e) {
                    responseArray[0] = "1";
                    e.printStackTrace();
                }


            } catch (JSONException e) {
                responseArray[0] = "1";
                e.printStackTrace();
            }
            return responseArray;

1 个答案:

答案 0 :(得分:-1)

没有明确需要为每个“.getJSONObject”方法添加try和catch块 有两种方法可以使用异常处理。
try-catch块。单试和catch块也可以正常工作。
2.让方法抛出JSONException 作为try和catch块的替代。

在编译时检查已检查的异常(例如您的异常),因此您需要使用两种方式之一处理它们 异常处理reference link