`
yeshaoting
  • 浏览: 668700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

finally在return之前执行

    博客分类:
  • J2SE
阅读更多

 

今年上自习看<<深入java虚拟机>>,有提到虚拟机里有种基本类型:returnAddress,用于实现finally子句.

由此想起以前有看过finally与return执行先后次序的讨论.

小编程序试试...加深印象.

 

 

/*
@author: jarg
http://jarg.iteye.com/
*/
public class Test
{
	public static void main(String[] args)
	{
		System.out.println(test());
	}

	public static String test()
	{
		try
		{
			int i = 2/0;
			System.out.println("error1.");
			return "1";
		}
		catch (Exception e)
		{
			System.out.println("error2.");
			return getValue();
		}
		finally
		{
			System.out.println("error3.");
		}
		//System.out.println("error4.");
	}

	public static String getValue()
	{
		System.out.println("getValue()");
		return "2";
	}
}

 

 

 

结果输出:

 

 

error2.

getValue()

error3.

2

 

解释:

 

 

catch子句中的return子句,会先计算并处理返回值,再判断是否有finally子句.

有则执行finally子句再执行方法返回的操作;否则直接方法返回.

 

 

分享到:
评论

相关推荐

    Java语言finally语句详解,finally到底是在return之前还是之后执行.zip

    Java语言finally语句详解,finally到底是在return之前还是之后执行.zip

    Java finally语句到底是在return之前还是之后执行?

    NULL 博文链接:https://seaizon.iteye.com/blog/2066983

    Java中finally块执行与return关系深度剖析

    Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。

    浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

    下面小编就为大家带来一篇浅谈Java finally语句到底是在return之前还是之后执行(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java大厂面经、直击BAT

    ## 二.finally finally 一定会被执行,如果 finally 里有 return 语句,则覆盖 try/catch 里的 return , 比较爱考的是 finally 里没有 return 语句,这时... finally到底是在return之前执行还是return之后执行?

    java是去蜗牛还是源码时代-JavaInterviewQuestions:Java面试题

    finally代码是在return之后还是之前执行? throws是获取异常,throw是抛出异常,try是将会发生异常的语句括起来,从而进行异常的处理, catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行...

    java线程池概念.txt

    //这里就可以继承ThreadPoolExecutor,并覆盖beforeExecute(...)该方法,来做一些执行任务之前的统计工作或者用来保存正在执行的任务 beforeExecute(thread, task); try { task.run(); ran = true; //这里就...

    net学习笔记及其他代码应用

    43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...

    Blog:充当日常笔记或者个人博客吧

    Nginx配置文件详解Linux 安装JenkinsJAVA 多线程详解java 多线程学习How to create a Hello World with IntelliJ and Aspect JJava各种对象(PO,BO,...JavaBeans)的区分Java finally语句到底是在return之前还是之后执行...

    JSTL详细标签库介绍

    finally{无类是否出现异常都执行的程序} &lt;BR&gt;1、 若try抛出Exception,App寻找在Catch1~100寻找合适异常处理程序,若找到,执行CATCH{}代码,没有,执行最后一个catch{}后代码&lt;BR&gt;2、 若try未抛出Exception,就...

    java 面试题 总结

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    JAVA面试题最全集

    方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

    超级有影响力霸气的Java面试题大全文档

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    二十三种设计模式【PDF版】

    一个设计在最终完成之前常要被复用好几次,而且每一次都有所修改。 有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象 技术。新手需要花费较长时间...

    java经典面试2010集锦100题(不看你后悔)

    return day+"/"+month; } } class Test2 { public static void main(String[] args) { Test test=new Test(); test.day=25; System.out.println(test.getDate()); } } 有关类的描述正确的是:(选择...

    springmybatis

    请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句: session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1) 其实还有更简单的方法,而且是更好的方法,使用合理描述参数和...

    c#学习笔记.txt

    如果不使用 new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可...

    Java的六大问题你都懂了吗

    如果在catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧!其实第三种...

    最新Java面试宝典pdf版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    Java面试笔试资料大全

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

Global site tag (gtag.js) - Google Analytics