Метод Java должен либо вернуть, либо выдать исключение.Компилятор отказывается от компиляции, если все возможные пути кода не приводят ни к возврату, ни к исключению.Путь к уникальному коду в этом методе вызывает исключение, поэтому оно допустимо.
Недопустимым было бы следующее: если i <= 0
, ничего не возвращается и исключение не выдается:
public int test() throws Exception {
int i = new Random().nextInt();
if (i > 0) {
throw new Exception("exception");
}
}
Это будет допустимо, если изменить на
public int test() throws Exception {
int i = new Random().nextInt();
if (i > 0) {
throw new Exception("exception");
}
else {
return 0;
}
}