void tryItOut () {}
void wrapItUp () {}

void tryFinally() {
	for (int i = 0; i < 2; i++) {
		try {
			tryItOut();
		} finally {
			wrapItUp();
			return;
		}
	}
}

生成的class文件的内容如下:

void tryFinally();
    flags:
    Code:
      stack=2, locals=3, args_size=1

	 0: iconst_0  // 将0压入栈顶
         1: istore_1  // 将0存入本地变量表1的位置
         2: iload_1
         3: iconst_2
         4: if_icmpge     22

         // 进入try的body体
         7: aload_0
         8: invokevirtual #2                  // Method tryItOut:()V

         // 进入finally的body体
        11: aload_0
        12: invokevirtual #3                  // Method wrapItUp:()V
        15: return

        16: astore_2 // 将throwable异常存储到本地变量表2的位置
        17: aload_0
        18: invokevirtual #3                  // Method wrapItUp:()V
        21: return

        22: return

      Exception table:
         from    to  target type
             7    11    16   any
            16    17    16   any
public void t(boolean a, int b) {
	E: {
		while (a) {
			if (b == 1) {
				continue;
			}
			if (b == 2) {
				break;
			}
			if (b == 3) {
				break E;
			}
		}

		int c=2;
	}
}

class文件内容如下:

public void t(boolean, int);
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
         0: iload_1
         1: ifeq          28 // 当栈顶int型数值等于0 时跳转

         // continue的处理
         4: iload_2          // 将形式参数变量b压入栈顶
         5: iconst_1         // 将常量1压入栈顶
         6: if_icmpne     12 //  比较栈顶两int型数值,当且仅当不相等时结果为真,为真后跳转到12
         9: goto          0

         // break的处理
        12: iload_2
        13: iconst_2
        14: if_icmpne     20
        17: goto          28

         // break的处理
        20: iload_2
        21: iconst_3
        22: if_icmpne     0
        25: goto          30

        28: iconst_2
        29: istore_3
        30: return

本地变量表的内容如下:

0:this
1:方法形式参数a
2:方法形式参数b

  

  

  

最新文章

  1. AndroidStudio快捷键
  2. OOM异常产生的原因和处理方法
  3. 【转】SQL 操作类
  4. Visual Studio 2010配置Opencv2.4.9
  5. (翻译)初学者的object-C指南
  6. [LeetCode]题解(python):088 Merge Sorted Array
  7. 如何使用编辑模板在ASPxGridView中进行新增修改(除去常规的gridviw模板编辑外)
  8. ajax与jsonp的区别
  9. [转]内嵌WORD/OFFICE的WINFORM程序——DSOFRAMER使用小结
  10. UIActionViewController 详解 iOS8
  11. YII 主题
  12. CVE-2015-0057 POC构造 &amp; 利用分析(2015.7)
  13. IOS真机Profile时调用树中的对象只是显示地址,没有显示symbol name
  14. js金钱转大写
  15. selenium webdriver 的环境搭建时注意事项
  16. CDN及CDN加速原理
  17. linux 相关( 随时更新)
  18. 细说flush、ob_flush的区别
  19. 启动MyEclipse8.5时未响应
  20. idea最常使用的快捷键

热门文章

  1. WordPress-Word图片上传插件整合教程-Xproer.WordPaster
  2. SED单行脚本快速参考(Unix 流编辑器)
  3. bzoj2893(费用流)
  4. linux初学terminal命令(1)ls、cd、su、man、pwd、useradd、passwd、cat、Ctrl+C、Ctrl+Z、Ctrl+L
  5. 第70讲:Scala界面GUI编程实战详解
  6. kafka_shell操作
  7. 区间DP POJ1160村庄邮局问题
  8. [javascript]Three parts of javascript code snippet
  9. 11i - 12 Gather Schema Statistics fails with Ora-20001 errors after 11G database Upgrade (文档 ID 781813.1)
  10. [Proposal]Nano-Diary(纳日记)