【发布时间】:2019-02-15 11:57:31
【问题描述】:
我需要检查给定字符串在 Java 中是否是有效的 JSON。
我使用 google gson 的简单方法是:
public static boolean isValidJson(String str) {
try {
gson.fromJson(str, Object.class);
return true;
} catch(com.google.gson.JsonSyntaxException ex) {
return false;
}
}
我们可以将任何 JSON 解析器用于相同的逻辑,但我还没有看到任何内置方法来验证 json。
另一个经典的例子是,一个用于检查数字的自定义函数:
public static boolean isNumeric(String str)
{
try
{
double d = Double.parseDouble(str);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}
我的问题是:以这种方式对逻辑使用异常可以吗?或者这是一种不好的做法?
【问题讨论】:
-
使用
Double.parseDouble(str);并捕获NumberFormatException是实用性问题。没有boolean Double.canParse(String)方法,因此开发人员很可能使用try/catch 来验证输入。 JSON 验证也是如此。 但是当你开发你的 API 时,避免强迫你的用户依赖抛出的异常。在这种情况下提供boolean返回方法。
标签: java performance exception logic