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

  

  

  

Gen对于break、continue与return的处理的更多相关文章

  1. js中退出语句break,continue和return 比较 (转载)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  2. js中退出语句break,continue和return 比较

    js中退出语句break,continue和return 比较 在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是 ...

  3. JS中break continue和return的用法?

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环 ...

  4. js中退出语句break,continue和return 比较(转)

    原链接:http://blog.163.com/ued_er/blog/static/199703159201210283107315/ js中退出语句break,continue和return 比较 ...

  5. js中的break,continue和return到底怎么用?

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  6. [转帖]Shell脚本中的break continue exit return

    Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...

  7. 【疑点】js中的break,continue和return到底怎么用?

    转: [疑点]js中的break,continue和return到底怎么用? 为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在 ...

  8. js中退出语句break,continue和return 比较 (转)

    在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一 ...

  9. js中的break,continue和return的用法及区别

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  10. break continue exit return 的区别

    [root@localhost day1]# cat ss.sh #!/bin/bash for ((i=0;i<5;i++)) do if [ $i -eq 3 ] then break #c ...

随机推荐

  1. MIT Molecular Biology 笔记2 DNA的突变和修复

    视频  https://www.bilibili.com/video/av7973580?from=search&seid=16993146754254492690 教材 Molecular ...

  2. 2018-01-13 view绘制流程-activity启动流程-window-decorView-ViewRootImpl关系

    1.activity启动流程: https://www.jianshu.com/p/927ca995bca6 http://blog.csdn.net/qian520ao/article/detail ...

  3. NLP生成论文

    论文框架 内容 注:既要有引用,又不能完全引用,是在前人基础上更进一步.

  4. day36(动态代理)

    动态代理 动态代理:是实现增强类中的一种方式,jdk中的动态代理:Proxy对象,使用最广泛的是在AOP切面编程中. 实现一个简单的动态代理来了解其中的运行机制. 创建一个接口:Person类型的接口 ...

  5. js获取标签下标

    <body> <div class="titTab"> <span>低</span> <span>中</span& ...

  6. hdu 4704 Sum 【费马小定理】

    题目 题意:将N拆分成1-n个数,问有多少种组成方法. 例如:N=4,将N拆分成1个数,结果就是4:将N拆分成2个数,结果就是3(即:1+3,2+2,3+1)--1+3和3+1这个算两个,则这个就是组 ...

  7. 杭电2133What day is it

    给你个日期 问是星期几        知道1 1 1是周1就行了 #include <iostream>#include <cstdio>using namespace std ...

  8. 关于2011年meng-meng组产品《豆酱》的Review

    这个组是一个做手机应用的组,比较有特色. 经过我们的一致讨论,得出我们组对前辈的有关选题.团队.产品等几个方面的看法,以及我们的感想. 选题的特点: 这个选题对于一个短期项目来说是很合适的,经过较为详 ...

  9. GitHub 教程【转】

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  10. Grid++Report报表工具C/S实战篇(五)

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第五部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...