Java的断言运行安全
我期待这样的事情:Java的断言运行安全
assertSafe(Integer.parseInt(val))
这可能吗?
谢谢!
回答:
你想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);
不能象一般,你会想我猜?带lambda表达式的Java 8可能会有所帮助,但我不认为语法会像你想的那样干净。
斯卡拉有一种叫做“按名称调用”的东西,它确实将代码块作为函数传递。在Scala中创建assertSafe很容易。
回答:
类型检查,例如,从JSON字符串中提取值时 - 我想知道为什么它不容易获得。
如果您使用扫描仪,它支持hasNextInt(),hasNextDouble()或hasNextNext()=> String。
通常情况下,你知道什么类型的期望,如果你不解析这个,因为你读它。我会避免阅读一个字符串,我想作为int
,这是效率低下。 ;)
以上是 Java的断言运行安全 的全部内容, 来源链接: utcz.com/qa/261358.html