try-catch块会在代码中添加不必要的行,使代码看起来很混乱。由于值总是存在的,所以没有必要包含try-catch块。使用JsonObject而不需要使用try-catch或throws方法处理异常的推荐方法是什么?
以下是我目前拥有的:
try {
textViewOfcountryName.setText(new JSONObject("{\"EN\": \"Spain\", \"ES\": \"España\"}").getString(getString(R.string.iso_639)));
} catch (JSONException e) {
throw new RuntimeException(e);
}
以下是我正在寻找的:
textViewOfcountryName.setText(new JSONObject("{\"EN\": \"Spain\", \"ES\": \"España\"}").getString(getString(R.string.iso_639)));
3条答案
按热度按时间zwghvu4y1#
在Java中,如果你调用一个抛出检查异常的方法,比如
JSONException
,那么你需要使用try-catch块来处理异常,或者使用throws关键字来声明要抛出的异常。所以我认为避免try/catch块的唯一方法是将方法标记为抛出
JSONException
。vhmi4jdf2#
如果你使用的是lombok,你可以用@SneakyThrows注解你的方法:
或者,您可以创建一个实用函数,该函数接受一个抛出Exception的 Runnable 函数,执行它,并捕获和重新抛出异常作为 * RuntimeException *:
你可以在任何你需要的地方重复使用它,就像这样:
如果你不想自己定义它,你可以使用像vavr或类似的库:https://www.baeldung.com/exceptions-using-vavr
eiee3dmh3#
如果您真的想避免Try Catch,可以使用JSONObject中的optString函数。
getString抛出一个异常,所以你要么自己抛出它,要么把它放在一个try catch中
optString也有类似的功能,但是如果没有找到字符串,它会返回一个默认的String,并且不会抛出异常。
因此您可以有效地将代码替换为
链接到optString的文档:https://javadoc.io/static/org.json/json/20230227/org/json/JSONObject.html#optString-java.lang.String-