Mar*_*scu -1 java if-statement exception throw
有没有一种方法可以在不使用Java中的if语句的情况下在函数中引发异常?例如,如果一个整数小于0,我想抛出一个异常,但是当检查该特定条件时,我不想使用if(或switch)语句。
你可以做到这一点,当然,但为什么呢?
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)
您如何知道需要调用上述方法,而无需先检查条件?