Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

If catch statement is returning ,then why it is going to finally block? [duplicate]

Tags:

java

package com.ami.practice;
public class UnrechebleStatement {
public static void main(String[] args) {
    System.out.println(m());
        }

public static int m(){
    try{
        int x=0;
        int y=10/x;
        return y;
    }catch(Exception e){
        return 1;
    }finally {
        return 2;
    }
  }
}
like image 603
Sagar Mahapatra Avatar asked Dec 05 '25 15:12

Sagar Mahapatra


2 Answers

from the JLS#14.17

A return statement with an Expression attempts to transfer control to the invoker of the method that contains it; the value of the Expression becomes the value of the method invocation. More precisely, execution of such a return statement first evaluates the Expression. If the evaluation of the Expression completes abruptly for some reason, then the return statement completes abruptly for that reason. If evaluation of the Expression completes normally, producing a value V, then the return statement completes abruptly, the reason being a return with value V.

[...]

The preceding descriptions say "attempts to transfer control" rather than just "transfers control" because if there are any try statements (§14.20) within the method or constructor whose try blocks or catch clauses contain the return statement, then any finally clauses of those try statements will be executed, in order, innermost to outermost, before control is transferred to the invoker of the method or constructor. Abrupt completion of a finally clause can disrupt the transfer of control initiated by a return statement.

Especially the second part should perfectly answer your question

like image 102
SomeJavaGuy Avatar answered Dec 07 '25 05:12

SomeJavaGuy


Finally block is always executed... Wether try is executed or catch...

like image 36
Ashwin Golani Avatar answered Dec 07 '25 04:12

Ashwin Golani



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!