try..return..catch..return..finally...return

至少有两种状况下finally语句是不会被执行的:code

(1)try语句没有被执行到,如在try语句以前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句必定被执行到。虚拟机

(2)在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都中止了,全部都结束了,固然finally语句也不会被执行到。it

 

public String test() {
		try {
			Object obj = null;
			if(obj.equals("123")){
				System.out.println("123");
			}
			return "try block";
		} catch (Exception e) {
			return "catch block";
		} finally {
			System.out.println("d");
			//return "finally block";
		}
	}

如上代码:io

    先执行finally代码块,而后返回try或catch的return值。test

注:方法

不能在finally块中使用return,finally块中的return返回后方法结束执行,不会再执行try或catch块中的return语句。co

相关文章
相关标签/搜索