java异常处理代码块的镶嵌

异常处理流程代码可以放在任何可以放可执行代码的地方,因此完整的异常处理流程既可以放在try块里,也可以放在catch块里,还可以放在finally块里。try-catch-finally处理异常时,可以进行代码块的镶嵌使用。

public static void main(String[] args) {
        try{
            //A
            try{
                //B
            }catch{
                //C
            }finally{
                //D
            }
            //E
        }catch{
            //F
        }finally{
            //G
        }
    }

若抛出异常在A、E处,则由外层catch块捕获,并且执行外层finally,即执行G;

若抛出异常在内层B处,且被内层中的catch捕获,则执行内层finally语句,然后再执行外层的finally语句,即先执行D后在执行E最后执行G;

若抛出异常在内层B处,但是内层没有catch可以捕获,则执行内层finally后再在外层catch寻找合适的catch块,然后执行外层的finally语句块,不会执行E;

若抛出异常在内层C处,则会退出内层catch块,先执行内层finally语句块,搜索外层catch,找到合适的处理程序,并执行外层finally语句块;

若抛出异常在内层D处,则退出finally块,搜索外层catch语句块,找到合适的处理程序,执行外层finally。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值