try、catch、finally的执行顺序

这个小程序的打印结果是什么? 还好我做对了, 不过借此也复习一下try、catch、finally的执行顺序

 

import java.io.IOException;

public class ExceptionTest {
        class MyException extends Exception{
        }
        String sf1() {
                int i = 0;
                try{
                        if(i==0)
                                throw new MyException();
                        System.out.println("IN");
                        return null;
                }catch(MyException e){
                        System.out.println("CATCH");
                }finally{
                        System.out.println("FINALLY");
                }
                System.out.println("OUT");
                return null;
        }
        public static void main(String[] args){
                new ExceptionTest().sf1();
        }
  执行结果是:

CATCH
FINALLY
OUT

概括成几个要点:

1. 在try代码块中如果发生错误,将抛出exception,停止执行try代码块中后面的代码,然后执行catch块的代码,之后执行finally块的代码,如果catch块和finally块的代码都没有return语句,那么将执行finally块后面的代码。

2. 如果try代码块中未发生异常,那么先执行完try代码块的所有代码,再执行finally块的代码,如果try代码块有return语句,那么在这之前先要执行finally代码块的代码, 如果try和finally都没有return语句,那么再执行finally块后面的代码。

3. 在一个方法中没有被捕获得异常总是会向上影响调用它的方法,这种影响会继续向上延伸到调用该方法的各级,直到它被捕获,或者到达最上层的main()方法。如果在main中还没有捕获异常,程序就会停止运行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值