我可以在不嵌套try语句的情况下尝试多种方法吗?

Tom*_*ica 2 java exception-handling try-catch

我的程序正在处理一些JSON数据.我希望程序在一段时间内保持稳定,JSON数据可以随着源的更新和改进而改变.这是从数据中返回一些图像文件名的当前函数:

@Override
public String createImgName() {
  try {
    // data["image"]["full"]
    return getJSONData().getJSONObject("image").getString("full");
  }
  catch(JSONException e) {
    try {
      // data["id"] + ".png"
      return  getJSONData().getJSONObject("id")+".png"; 
    }
    catch(JSONException e2) {
      return null;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

还有一些我try可以获得图像名称的东西.但该计划将变得非常丑陋.

try成功之前是否存在多种事物的语法?在我的情况下,该return声明打破了成功的程序,但可能并非总是如此.

小智 8

您可以使用.has()或.isNull()方法检查可能的键,而不是使用多个try语句.

更多信息:http : //www.json.org/javadoc/org/json/JSONObject.html#has(java.lang.String)http://www.json.org/javadoc/org/json/JSONObject.html #isNull(java.lang.String中)

例如:

@Override
public String createImgName() {
  try {
    JSONObject data = getJSONData();
    // data["image"]["full"]
    if (data.has("image")) {
      return data.getJSONObject("image").getString("full");
    } else if (data.has("id")) {
      return data.getJSONObject("id")+".png";
    }
  }
  catch(JSONException e) {
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)