Java断言操作是安全的

时间:2013-08-02 05:23:37

标签: java junit

我正在寻找类似的东西:

assertSafe(Integer.parseInt(val))

有可能吗?

谢谢!

2 个答案:

答案 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字符串,这是低效的。 ;)