我看到一个同事在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;
答案 0 :(得分:-1)
没有明确需要为每个“.getJSONObject”方法添加try和catch块
有两种方法可以使用异常处理。
try-catch块。单试和catch块也可以正常工作。
2.让方法抛出JSONException 作为try和catch块的替代。
在编译时检查已检查的异常(例如您的异常),因此您需要使用两种方式之一处理它们 异常处理reference link