try - finally执行先后?
来源:互联网 发布:淘宝卖家假货怎么避免 编辑:程序博客网 时间:2024/06/05 18:07
有这样的一段代码:
public static void main(String[] args) {System.out.println("t="+test());}private static int test() {int x = 1; try { return x; } finally { ++x; System.out.println("x="+x); }}输出结果:]
x=2t=1
从结果来看,肯定是执行了,也不可能先于try执行,大多数人觉得是后于try执行,也有说是return执行中的时候执行。。。。。但是看下面的例子。
查了一些资料:
public static void main(String args[]) { smallT t = new smallT(); int b = t.get(); System.out.println(b); } public int get() { try { return 1 ; } finally { return 2 ; } }
结果:输出2.。。。。。。。。。
和上面对照看起来,就感觉很奇怪了
再看一个:
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}
int test()
{
try
{
return func1();
}
finally
{
return func2();
}
}
int func1()
{
System.out.println("func1");
return 1;
}
int func2()
{
System.out.println("func2");
return 2;
}
-----------执行结果-----------------
func1
func2
2
结论:(仅供参考)try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
- try - finally执行先后?
- try中return语句与finally块的执行先后
- try与finally返回结果执行先后详解
- try--finally中,try里面的return和finaly执行的先后
- Android面试之java基础try-catch-finally-return的执行先后顺序问题
- try{} catch(){}finally{}执行
- try finally执行顺序
- try、catch、finally及finally执行…
- try{} finally{} 中 finally的执行顺序
- try---catch--finally,finally是否一定执行?
- return finally的先后执行顺序
- finally return执行的先后顺序
- try,catch,finally执行流程
- try catch finally执行顺序
- try catch finally执行顺序
- try-catch-finally执行机制
- try catch finally执行顺序
- try catch finally执行顺序
- Deploying RDLC files in local mode for ASP.NET applications
- matlab和c混合编程调试问题----当前不会命中改断点,还没有为该文档加载任何符号
- HDU1867 - A + B for you again(KMP)
- IE – File - Work Offline
- Unable to build project output group 'Content Files from ThisProjectName (Active)’
- try - finally执行先后?
- HTML基础篇(1)
- ASP.NET CompareValidator validate Currency
- linux下软件项目的Makefile编写
- springside代码规范
- AutoCompleteExtender in Safari create new line after TextBox
- Export GridView to Excel within an UpdatePanel
- ArcGIS Desktop 打开后一直处于 “正在加载应用程序……” 问题解决方案
- 我的sublime2安装