java异常处理finally

package frank;
import java.lang.*;

/**
 * java异常处理finally
 * 当在try或者catch里面遇到了return或者throw语句,系统会立即寻找finally语句块,如果找了finally块,系统会立即执行,执行完成后然后在返回来执行return或者throw语句,但是如果finally里面也有return或者throw那么就会立即停止方法,从而不会跳转到try或者catch里面,使return或者throw语句无法执行到
 * 完整的异常处理块可以放在任何地方,但是不要嵌套太多,这样子就会影响可读性。try后面可以没有catch和finally块。也可以跟多个catch和一个finally
 * */
public class App
{
	public static void main(String[] args)throws Exception
	{
		/*
		try
		{
			String sa = args[0];
		}
		catch(Exception e)
		{
			System.out.println(e);
			//System.exit(1);//退出虚拟机,finally将不会执行
			return;//就算定义了return让程序强制退出方法,但是也会执行finally里面的代码。
		}
		finally
		{
			//始终会执行一次
			System.out.println("1");
			//return false; 最好不要在finally里面写return语句,因为它会覆盖try或者catch里面的reutrn语句,从而使返回结果不正确。
		}*/
		System.out.println(get(args));//心里想着会输出false,但是实际确实输出的finally里面的true。
	}
	static boolean get(String[] args)
	{
		try
		{
			String sa = args[0];
		}
		catch(Exception e)
		{
			System.out.println(e);
			//System.exit(1);//退出虚拟机,finally将不会执行
			return false;//就算定义了return让程序强制退出方法,但是也会执行finally里面的代码。
		}
		finally
		{
			//始终会执行一次
			System.out.println("1");
			return true; //最好不要在finally里面写return语句,因为它会覆盖try或者catch里面的reutrn语句,从而使返回结果不正确。
		}
	}
	static void autoClose()
	{
		//java 7里面对try进行了改进,允许在try后面跟小括号()里面对一些资源对象的初始化,当try结束后自动的执行对象的关闭方法,所以对象必须实现AutoCloseable或者Closeable接口。所以不用在finally里面释放资源了。
		/*
		try(
		BufferedReader br = new BufferedReader(new FileReader("1.txt"));
		PrintStream ps = new PrintStream(new FileOutputStream(a.txt));

		)
		{
			
		}
		catch()
		{
			
		}
		*/
	}
}

  

posted on 2013-10-25 11:08  wp456  阅读(246)  评论(0)    收藏  举报

导航