读书人

java中try catch finally与return的实

发布时间: 2012-10-06 17:34:01 作者: rapoo

java中try catch finally与return的执行顺序(转)
测试1:
public static int test1()
{
int i = 1;
try
{
return ++i;
}
finally
{
++i;
Console.WriteLine("finally:" + i);
}
}
static void Main(string[] args)
{
Console.WriteLine("Main:" + test1());
}
结果:
finally:3
Main:2


--------------------------------------------

测试2:
public static int test2()
{
int i = 1;
try
{
throw new Exception();
}
catch
{
return ++i;
}
finally
{
++i;
Console.WriteLine("finally:" + i);
}
}

static void Main(string[] args)
{
Console.WriteLine("Main:" + test2());
}
结果:
finally:3
Main:2


--------------------------------------------

测试3:
public static int test3()
{
try{}
finally
{
return 1;
}
}

结果:
编译错误,控制不能离开 finally 子句主体。


--------------------------------------------

结论:

1.不管出没出现异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在函数返回前执行的,但函数返回值是在finally块中语句执行前确定的;
4.finally块中不能包含return语句。

读书人网 >编程

热点推荐