【无标题】try/catch/finally

在这里简单介绍一个异常机制当中有趣的代码例子;
首先我们来看下面的这一段代码

public class Test0 {
    public static int method01(){
        try {
            String[] names = new String[3];
            if(names[1].equals("tom")){
                System.out.println(names[1]);
            }else {
                names[3] = "hanshunping";
            }
            return 1;
        } catch (ArrayIndexOutOfBoundsException e) {
            return 2;
        }catch (NullPointerException e){
            return 3;
        }finally {
            return 4;
        }
    }
     public static void main(String[] args) {
        System.out.println(method01());//输出为4
    }

}

在看下面的一段代码:

public static int method02(){
        int i =1;
        try {
            i++;
            String[] names = new String[3];
            if(names[1].equals("tom")){
                System.out.println(names[1]);
            }else {
                names[3] = "hanshunping";
            }
            return 1;
        } catch (ArrayIndexOutOfBoundsException e) {
            return 2;
        } catch (NullPointerException e){
            return ++i;
            //在这里因为还要执行finally语句,所以用临时变量
            //保存i=3 =》temp=3,如果要在这里进行返回操作
            //那么返回的就是临时变量的值3
        }finally {
             ++i;
             System.out.println("i =" + i);
        }

    }
    public static void main(String[] args) {
        System.out.println(method02());//输出为3
    }
}

在这里滴一段代码不做过多介绍,主要对第二段代码进行对比,首先我们判断出try语句中应该抛出的是空指针异常,所以第二段代码中i进行自加变成3,因为还有finallu语句需要执行,所以在这里我们内部使用了一个临时变量来进行存储3,再运行finallu语句,i变成4,但是finally中并没有返回语句,所以我们在抛出空指针异常处进行返回值,返回的是临时变量的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值