07.01-try-catch-finally等要点(笔记)

对于try-catch-finally的总结为:

    当try中的某条语句引发了异常后,程序会立即跳转到catch部分,查找和该异常类型匹配的catch语句并执行catch{}中的所有语句,而位于try中的发生异常语句后面的所有语句(正常语句和会发生异常的语句)都不会执行。当异常没有发生在try中(如下面代码中的在catch块中发生异常的情况),那么该异常将会向上抛出,除了同级的finally语句中的内容会执行外其它的将都不执行,因为当发生异常时首先会寻找包裹这段发生异常的try,如果找到了就查找该try对应的catch语句否则就执行完finally语句后将异常向上抛出。

这里对上面的情况再进行两种情况分析:

1、查找到和该异常匹配的catch语句:执行catch中的所有语句,再执行finally中语句

2、没有查找到和该异常匹配的catch语句:程序会先执行finally中语句,然后立即跳转到上级catch部分,进行查找匹配,如果一直都没有找到匹配的catch语句,会一直抛到JVM进行拦截处理。

 

小注:

1、finally中的语句一定会执行的,

2、当catch异常的时候,如果异常被前面的catch捕获到,就不可能再被后面的异常捕获到。

3、try和catch可以连用

   try和finally可以连用

   try-catch-finally可以连用

   除此之外便没有什么其他形式可以用到try、catch、finally中的任何一个关键字。

 

参考代码如下:

package test;

import java.io.IOException;

public class Test {
	 /**
	  * @param args
	  */
	 public static void main(String[] args) {
	  try {
	   throw new java.io.FileNotFoundException();
	  }catch (IOException e) {
	   System.out.println("-----IOException");
	   throw new java.lang.IllegalArgumentException();
	  }catch(IllegalArgumentException e) {
	   System.out.println("----IllegalArgumentException");
	   return;
	  }catch(Exception e) {
	   System.out.println("----Exception");
	   return;
	  }finally {
	   System.out.println("-----finally");
	  }
	 }
	}

	/**输出结果如下
		-----IOException
		-----finally
	**/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值