Behaviour of return statement in catch and finally

后端 未结 8 839
情歌与酒
情歌与酒 2020-11-27 11:44

Please see the following code and explain the output behavior.

public class MyFinalTest {

    public int doMethod(){
        try{
            throw new Exce         


        
8条回答
  •  无人及你
    2020-11-27 12:41

    This is an easy question if you remember the low level layout of the VM.

    1. The return value is put up the stack by the catch code.
    2. Afterwards, the finally code is executed and overwrites the value on the stack.
    3. Then, the method returns with the most up to date value (10) to be used by the caller.

    If unsure about things like this, fall back to your understanding of the underlying system (ultimately going to assembler level).

    (funny sidenote)

提交回复
热议问题