Насколько я понимаю, следующий код должен вывести 0
как вывод, потому что стек заполнен, и он должен немедленно выйти из метода.
Однако, когда я запустил следующий код, он печатает 100
для первого случая и печатает 1
для второго случая:
class ErrorAndException {
public static int callStackOverflow() {
try {
callStackOverflow();
return 100;
} catch (Error e) {
System.out.println(e);
return 0;
} finally {
}
}
public static void main(String[] args) {
System.out.println(callStackOverflow());
}
}
Кейс - 2
class ErrorAndException {
public static int callStackOverflow() {
try {
callStackOverflow();
return 100;
} catch (Error e) {
System.out.println(e);
return 0;
} finally {
return 1
}
}
public static void main(String[] args) {
System.out.println(callStackOverflow());
}
}
Пожалуйста, помогите мне понять это поведение.