不使用if抛出异常-Java

Mar*_*scu -1 java if-statement exception throw

有没有一种方法可以在不使用Java中的if语句的情况下在函数中引发异常?例如,如果一个整数小于0,我想抛出一个异常,但是当检查该特定条件时,我不想使用if(或switch)语句。

Ósc*_*pez 6

可以做到这一点,当然,但为什么呢?

public static void checkNegative(int n) {
    try {
        int[] a = new int[n];
    } catch (NegativeArraySizeException e) {
        throw new IllegalArgumentException();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的方法将抛出IllegalArgumentExceptionif(或您想要的任何其他异常),如果n < 0则不执行任何操作0 <= n < 2^31 - 1。但可以肯定,在某处创建有一个数组的代码是一个if,它是隐含的。

您也可以使用assert来终止条件,AssertionError如果已false启用断言,则将在验证的表达式为- 的情况下抛出条件:

assert n >= 0;
Run Code Online (Sandbox Code Playgroud)

当然,您可以在显式验证条件的情况引发异常,但是在大多数情况下,您都想在引发异常之前先进行检查。

public static void throwForTheHeckOfIt() {
    throw new NumberFormatException();
}
Run Code Online (Sandbox Code Playgroud)

您如何知道需要调用上述方法,而无需先检查条件?