как блок Try catch finally выполняется JVM

Согласно спецификации языка Java,Раздел §14.20.2

Оператор try с блоком finally выполняется первым выполнением блока try. Тогда есть выбор:

Если выполнение блока try завершается нормально, выполняется блок finally, и затем появляется выбор:Если блок finally завершается нормально, тогда оператор try завершается нормально.Если блок finally завершается преждевременно по причине S, то оператор try завершается преждевременно по причине S

Если я правильно его интерпретирую, то после выполнения блока try, наконец, вызывается, но как все это работает и почему я получил вывод,

public static int TestTryFinallyBlock()  
{
    int  i =0;
    try 
    {
        i= 10; //Perform some more operation
        return i;
    }       
    finally
    {
        i = 40; 
    }
}

public static void main( String[] args )
{
    int i1 = TestTryFinallyBlock(); //Here the output was 10 not 40
}   

Я хочу знать, как эта штука дала результат 10.

Когда блок try выполняется и встречается оператор return, выходное значение уже помещается в стек, а затем выполняется блок finally

Я знаю, что возвращение встречается первым, а затем, наконец, блокируется, поэтому вывод равен 10, ноКак интерпретировать jvm или как блок try finally обрабатывается или конвертируется jvm?

Это jvm использует раздел перехода GOTO для перехода в раздел finally или стек уже поддерживается?

Ответы на вопрос(5)

Ваш ответ на вопрос