0
  try {
            System.out.println("try1");
            return 1;
        } 
  finally {
            System.out.println("finally1");
            return 2;
        }

Here clearly output is

try1
finally1
2

return inside try is never executed. But compiler does not throw unreachable code error. Why?

aswathy
  • 821
  • 3
  • 15
  • 27
  • 6
    "return inside try is never executed" - it *is* executed, but the return value is overridden by the return value from the `finally` block. There's no unreachable code here. – Jon Skeet Sep 13 '21 at 16:45
  • 1
    It's not unreachable per se. It's just superseded. – khelwood Sep 13 '21 at 16:45
  • 1
    "return inside try is never executed." You can see that it is by making it execute a method that prints something before returning a value, e.g. `return methodThatPrintsBeforeReturningValue(1);`. – Andy Turner Sep 13 '21 at 16:49

0 Answers0