Code:
stack=2, locals=5, args_size=1
0: iconst_0 iconst_0 加载常量0到操作栈顶
1: istore_1 istore_1 存储常栈顶的值到局部变量表的 第1个slot中(slot从0开始)
2: iinc 1, 1 iinc 将slot1的值加1
5: iload_1 iload_1 将第slot1加载进入操作栈
6: iconst_3 iconst_3 将常量3加载进入操作栈
7: if_icmpne 12 if_icmpne 将栈顶两个值比较如果不相等则进行跳转到12行 弹栈
10: iconst_4 加载常量4
11: ireturn 返回给调用者
12: iconst_3 比较不相等,加载常量3到操作栈
13: istore_1 将操作栈顶的值存入slot1
14: goto 47 调转到47行
17: astore_2 catch Exception 将对象e存入 slot2
18: iconst_2 加载常量2
19: istore_1 将栈顶值存slot1
20: iload_1 加载slot1进入操作栈
21: istore_3 将栈顶值存入slot3
22: iload_1 加载slot1进入操作栈(值为2)
23: iconst_3 加载常量3进入操作栈
24: if_icmpne 29 比较 栈顶的两个值 如果不想等 则调整到29行
27: iconst_4 加载常量4进入操作栈
28: ireturn 返回栈顶值给调用者
29: iconst_3 加载常量3进入操作栈
30: istore_1 存储在slot1
31: iload_3 加载slot3到操作栈顶
32: ireturn 返回栈顶值给调用者
33: astore 4 如果出现了不是Exception的对象存入slot4
35: iload_1 加载slot1的值进入操作栈 (值1)
36: iconst_3 加载常量3进入操作栈
37: if_icmpne 42 比较栈顶的值
40: iconst_4 加载常量4
41: ireturn 返回
42: iconst_3 加载常量3
43: istore_1 存储在slot1
44: aload 4 加载slot4
46: athrow 抛出 栈顶的 slot4
47: iload_1 加载slot1的值进入操作栈
48: ireturn 返回栈顶值给调用者