[随记] try catch finally return 执行顺序

package com.s.example;

/**
 * 测试try cache finally 执行顺序以及return
 * @author jacksang
 *
 */
public class Test {

	public static void main(String[] args) {
		
		int i;
		
		i = testOne();
		System.out.println(i);
		
		i = testTwo();
		System.out.println(i);
	}
	
	/**
	 * 在try出现异常finally出现return是否会执行
	 */
	public static int testOne(){
		try {
			System.out.println("try"); 
			throw new RuntimeException();
		} catch(Exception e) {
			System.out.println("catch");
		} finally {
			System.out.println("finally");
			return 1;
		}
		return 2;
	}
	
	//执行顺序
//	1. 打印"try"
//	2. 遇到throw RuntimeException
//	3. 捕获异常信息走catch,打印"catch"
//	4. 最后执行finally,并且返回1
//	5. main函数中输出1 (finally中包含return后外部return不执行)

	/**
	 * try中return会不会执行finally
	 */
	public static int testTwo(){
		try {
			System.out.println("try"); 
			return 1;
		} catch(Exception e) {
			System.out.println("catch");
		} finally {
			System.out.println("finally");
		}
		return 2;
	}
	//执行顺序
//	1. 打印"try"
//	2. 最后执行finally,并且返回1
//	3. main函数中输出1 (finally中包含return后外部return不执行)
	//注意如果在finally中包含return,将直接返回,try中return失效
	
}
 
 

猜你喜欢

转载自jacksang.iteye.com/blog/2287967