java - 我可以在不嵌套 try 语句的情况下尝试多项操作吗?

标签 java exception 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;
    }
  }
}

我还可以尝试其他一些方法来获取图像名称。但程序会变得非常难看。

是否有一种语法可以尝试多项操作直到其中一项成功?就我而言,return 语句在成功时会中断程序,但情况可能并非总是如此。

最佳答案

您可以使用 .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;
  }
}

关于java - 我可以在不嵌套 try 语句的情况下尝试多项操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992373/

相关文章:

java - 查找数组中出现的重复项的数量 - Java

java - ArrayAdapter<String> 中的 android UnsupportedOperationException

java - 如何通过 Java 注解抛出异常?

javascript - XPath 迭代异常 : "An attempt was made to use an object that is not, or is no longer, usable"

java - 我想删除动词的最后两个字母并使用 StringBuilder 将其结合起来

java - Java中如何从集合中获取特定对象

java - 如何将每个值添加到单独的行?

javascript - "throw new Error()"在 catch block 上下文中捕获

java - 在Java中,当我不在内部类中时如何访问外部类?

java - 如何从 java 中的 catch block 调用方法?