try catch finally return

Posted zhangoliver

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try catch finally return相关的知识,希望对你有一定的参考价值。

我感觉这个问题,在java中应当经常被问到,结合简单的代码来看。

一般而言,我们都知道的一句话,try..catch...finally代码块在执行的时候,无论如何都会执行finally中的内容。

1.try 块 和 finally块中都有return,执行try块中的内容之后,执行finally块,并且用finally中的return结束函数的执行。

public int test1() {
		try {
			System.out.println("try block");
			return 0;
		} catch (Exception e) {
			System.out.println("catch block");
			return 1;	// return from catch block
		} finally{
			System.out.println("finally block");
			return 2;	//return from finally block
		}
	}

 输出的是:

try block
finally block
2 try 中 有 return,finally中没有return。执行完finally中的语句之后,再执行try中的return。

public int test1() {
        try {
            System.out.println("try block");
            return 0;
        } catch (Exception e) {
            System.out.println("catch block");
            return 1;    // return from catch block
        } finally{
            System.out.println("finally block");
//            return 2;    //return from finally block
        }
    }

输出:

try block
finally block
0

执行完,finally中的语句之后,如果finaly中没有return,则到catch中寻找return子句,catch再没有的话,就要在往外寻找。

public int test1() {
        try {
            System.out.println("try block");
//            return 0;
            throw new Exception("a exception");
        } catch (Exception e) {
            System.out.println("catch block");
//            return 1;    // return from catch block
        } finally{
            System.out.println("finally block");
//            return 2;    //return from finally block
        }
        return 3;    // over test
    }

 

以上是关于try catch finally return的主要内容,如果未能解决你的问题,请参考以下文章

java异常中try或catch语句中可以有return语句吗?如有return会执行finall

try catch finally 块里都有return

try catch finally return

try{ } catch{ } finally{ }

try-catch-finallyjava异常捕获的三种格式以及finally和return的执行顺序

Try-catch-finally-return 澄清 [重复]