Вы можете сделать это, конечно, но почему?
public static void checkNegative(int n) {
try {
int[] a = new int[n];
} catch (NegativeArraySizeException e) {
throw new IllegalArgumentException();
}
}
Приведенный выше метод выдаст IllegalArgumentException
(или любое другое исключение, которое вы хотите), если n < 0
, и ничего не сделает, если 0 <= n < 2^31 - 1
. Но, безусловно, где-то в коде, который создает массив, будет if
, это неявно.
Также вы можете использовать assert
для проверки условия, которое будет выбрасывать AssertionError
, если проверенное выражение равно false
- при условии, что утверждения включены:
assert n >= 0;
И, конечно, вы можете выдать исключение без явной проверки условия, но большую часть времени вы хотите проверить что-то перед тем, как выдать исключение.
public static void throwForTheHeckOfIt() {
throw new NumberFormatException();
}
Откуда вы знаете, что вам нужно вызвать вышеуказанный метод, не проверяя сначала условие?