我正在寻找类似的东西:
assertSafe(Integer.parseInt(val))
有可能吗?
谢谢!
答案 0 :(得分:2)
您希望assertSafe捕获任何异常,并且失败,对吧?不幸的是,这对Java来说是不可能的(至少在今天)。一般而言,所有参数必须始终在传递给方法之前进行评估。
您可以创建一个帮助方法:
public static void assertSafeInt(String val) {
try {
Integer.parseInt(val);
} catch (NumberFormatException e) {
throw new AssertionError(val + " is not an int");
}
}
用法:
assertSafeInt(val);
不像我想的那样一般吗?带有lambdas的Java 8可能会有所帮助,但我不认为语法会像你想的那样干净。
Scala有一种名为“按名称调用”的东西,它实际上是将代码块作为函数传递。在Scala中创建assertSafe很容易。
答案 1 :(得分:1)
类型检查,例如,从JSON字符串中提取值时 - 我想知道为什么它不容易获得。
如果你使用Scanner,它支持hasNextInt(),hasNextDouble()或hasNext()=>字符串。
通常你知道期望什么类型,如果你没有在阅读时解析它。我会避免读取一个我想要的int
字符串,这是低效的。 ;)