欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 面试题 异常return

程序员文章站 2022-04-12 13:15:06
...
public static void main(String[] args) {
    int result=m1();
    System.out.println(result);
}
public static int m1(){
    int a=10;
    try{
        a=20;
        throw new RuntimeException();
    }catch(Exception e){
        a=30;
        return a;
    }finally {
        a=40;
    }
}
//答案
30

根据cmd 指令,打开字节码文件
javap -v 类名 > 保存的文件名
Java 面试题 异常return
这个就是执行的流程。

首先我先讲讲内存空间的分布。主要分为:JVM栈,堆,MataSpace(源空间)。JVM栈分成诺干个栈帧,每一个栈帧对应着一个方法。源空间里有方法区,方法区里又有运行时常量池,运行时常量池中又有字符串常量池。

Java 面试题 异常return

首先执行main()方法,main()入栈,之后调用m1()方法,m1()方法进栈。
Java 面试题 异常return

执行m1(),而栈帧又是这样一种结构。里面有程序计数器,局部变量表,操作数栈。
Java 面试题 异常return

左端是字节码文件。stack是指的操作数栈,只需要两个,locals指的是局部变量表。

相关标签: java