欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

笔试题总结——finally一定会被执行?

程序员文章站 2024-03-20 18:24:40
...

笔试题总结——finally一定会被执行?

  先来看一组定义

   finally一定会被执行,即便try/catch中有return语句,也要将finally走一遍再走try/catch的return语句,如果finally也有return语句,则直接返回,不会再走try/catch了的return语句了。

  概念都是晦涩难懂的,下面就举一个简单的例子,解释一下这晦涩的定义。

	//	finally中没有返回值
	public static int test(){
        try {
            System.out.println(10/0);
            return 0;
        }catch (Exception e){
            return 1;
        }finally {
            System.out.println("finally");
        }
    }

	//	打印结果
	finally
	1

  上面这个例子就能说明,若finally没有返回值而try/catch中存在返回值,则try/catch在返回前,先执行finally中的语句,再返回返回值

	//	finally中也存在返回值
	public static int test(){
        try {
            System.out.println(10/0);
            return 0;
        }catch (Exception e){
            return 1;
        }finally {
            System.out.println("finally");
            return 2;
        }
    }

	//	打印结果
	finally
	2

  该例可以说明,若finally中存在返回值,则将在执行try/catch的返回语句前,先执行finally语句块,当执行到finally语句块的返回语句时,直接return出去。(不会再返回到try/catch的返回语句了)

相关标签: finally