exception中return方法

public class ExceptionPitfall {
        public static void main(String[] args) {
            try {
                throw new RuntimeException();
            } finally {
                return;
            }
        }

}
输出为空,没有报错,这时好像吞掉了Exception
所以最好不要在finally中使用return

public class FinallyTest  
{
	public static void main(String[] args) {
		 
		System.out.println(new FinallyTest().test());;
	}

	static int test()
	{
		int x = 1;
		try
		{
			x++;
			return x;
		}
		finally
		{
			++x;
		}
	}
}
输出2
finally中改变了x中的值,但是返回的确实try中值,
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量x进行了改变,但是不会影响返回结果。
它应该使用栈保存返回值。

 

原文地址:https://www.cnblogs.com/alway-july/p/6557147.html