我想解析一个JSON,但每次得到一个值时,我都必须将指令放在try-catch块中.这是一个例子:
try {
this.setID(jsonObject.getLong("id"));
} catch (JSONException e) {
}
try {
this.setName(jsonObject.getString("name"));
} catch (JSONException e) {
}
//and so on....
Run Code Online (Sandbox Code Playgroud)
我不在乎指令是否出现异常.所以我想知道是否可以删除所有try-catch块并将所有指令放在一起.
实际上它更像是一个java问题而不仅仅是一个android问题....
编辑
只是澄清问题是什么.当因为没有我正在寻找的标签而出现异常时,我会继续进行下一个标签检查,而不是处理异常.要做到这一点,我必须编写上面发布的代码,因此一系列try-catch块.我一直在寻找更快(更优雅)的解决方案.
kco*_*ock 12
您可以使用opt方法而不是get方法,假设密钥不存在是可以的.如果密钥不是可选的,并且您的应用程序无法从那些并非全部存在的字段中恢复,那么您肯定应该使用这些get方法并在遇到错误时快速失败.
您可以使用的另一种有用的方法是has()方法.这将检查是否存在给定键的映射.(例如if (json.has("id") id = json.optString("id"))).
也许我不明白你在问什么,但为什么不把所有的调用都jsonObject放在同一个try-catch块中呢?
try {
this.setID(jsonObject.getLong("id"));
this.setName(jsonObject.getString("name"));
} catch (JSONException e) {
// log or consume it some other way
}
Run Code Online (Sandbox Code Playgroud)
你永远不应该只是吞下例外.至少记录一个错误.
| 归档时间: |
|
| 查看次数: |
8098 次 |
| 最近记录: |