Подскажите пожалуйста, почему в этом коде вывод не 13, а 22?
Ведь когда аргумент 0, тогда попадая в метод он равен нулю, идет выброс исключения и в кэтч идёт return 1. Когда аргумент 3, тогда в блоке трай внизу доходит до return i, и в итоге выводится тройка..
public class Test{
public static int test(int i) {
try {
if (i == 0) throw new Exception();
return i;
} catch (Exception e) {
return 1;
} finally {
return 2;
}
}
public static void main(String[]
args) {
System.out.print(test(0));
System.out.println(test(3));
}
}
Vladimir Shevchenko
26 уровень
Вопрос не по задаче
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Wladyslaw Java Developer Master
21 марта 2021, 19:52
Потому что ретурн в finally перетирает любое возвращаемое значение в другом блоке.
0