异常处理的运行过程

对于运行中可能出现异常的语句,我们一般用
try{}
catch(){
}finally{
}
进行处理,那么对于此语句的执行过程是怎样的呢?

1、控制通过正常的顺序执行到达try语句,然后执行try块内的保护段;
2、如果保护段try中语句没有发生异常时,将跳过catch语句,执行finally,然后继续向后面的语句执行下去;
3、如果在保护段执行期间或在保护段调用的任何函数中,有异常被抛掷,则通过throw操作创建一个异常对象。在这点,编译器在能处理抛掷类型的异常的更高执行上下文中寻找一个catch子句。catch处理程序按其在try块后出现的顺序被检查。如果没有找到合适的处理程序,则继续检查外层的try块。此处理继续下去直到最外层封闭try块被检查完。
4、如果匹配的处理程序未找到,程序终止。
例如:
public class MyTest {
public static void main(String[] args) {
try{
try {
System.out.println(4/3);
System.out.println(4/0);//抛出异常
System.out.println(3/5);//未执行
} catch (ArrayIndexOutOfBoundsException e){
System.out.println("1 is error");
} finally{
System.out.println("this is close");
}
} catch (Exception ex){
System.out.println("2 is error");
} finally {
System.out.println("all is close");
}
System.out.println("next");
}
}
执行结果:
1
this is close
2 is error
all is close
next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值