0

我正在寻找这样的东西:

assertSafe(Integer.parseInt(val))

是否可以?

谢谢!

4

2 回答 2

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);

不像你想的那么笼统?带有 lambda 的 Java 8 可能会有所帮助,但我认为语法不会像您希望的那样干净。

Scala 有一个叫做“按名称调用”的东西,它实际上是将代码块作为函数传递。在 Scala 中创建 assertSafe 很容易。

于 2013-08-02T05:45:57.283 回答
1

类型检查,例如,从 JSON 字符串中提取值时 - 我想知道为什么它不容易获得。

如果你使用 Scanner,它支持 hasNextInt()、hasNextDouble() 或 hasNext() => String。

通常,您知道预期的类型,如果您不了解,则在阅读时对其进行解析。我会避免读取我想要的字符串int,这是低效的。;)

于 2013-08-02T05:43:40.083 回答