Take a look at the following two methods:
public static void foo() {
try {
foo();
} finally {
foo();
}
}
public static void bar() {
bar();
}
Running bar()
clearly results in a StackOverflowError
, but running foo()
does not (the program just seems to run indefinitely). Why is that?