首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java中try catch finally与return的实施顺序(转)

2012-10-06 
java中try catch finally与return的执行顺序(转)测试1:public static int test1(){int i 1try{return +

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语句。

热点排行