IDEA-异常注意事项、多异常的捕获处理、finally有return语句,子父类异常

import java.util.List;

/*
    异常的注意事项
    
    运行时异常被抛出可以不处理,即不捕获也不声明抛出。
    默认给虚拟机处理,终止程序,什么时候不抛出运行时异常了,再来继续执行程序
 */
public class Demo01Exception {
    public static void main(String[] args) {
        /*
            多个异常使用捕获又该如何处理呢?
            1.多个异常分别处理
            2.多个一场一次捕获,多次处理
            3.多个一场一次捕获一次处理
         */

        //1.多个异常分别处理
//        try {
//            int[] arr = {1, 2, 3};
//            System.out.println(arr[3]);//ArrayIndexOutOfBoundsException:3 索引越界异常
//        } catch (ArrayIndexOutOfBoundsException e) {
//            System.out.println(e);
//        }
//
//        try {
//            List<Integer> list = List.of(1, 2, 3);
//            System.out.println(list.get(3));//集合索引越界异常
//        } catch (IndexOutOfBoundsException e) {
//            System.out.println(e);
//        }
///---------------------------------------------------------------------------
 /*
      一个try多个catch注意事项:
        catch里边定义的异常变量,如果有子父类关系,那么子类的异常变量必须写在上边,否则就会报错
  */
        //2.多个一场一次捕获,多次处理
//        try {
//            int[] arr = {1, 2, 3};
//            System.out.println(arr[3]);//ArrayIndexOutOfBoundsException:3 索引越界异常
//            List<Integer> list = List.of(1, 2, 3);
//            System.out.println(list.get(3));//集合索引越界异常
//
//        } catch (ArrayIndexOutOfBoundsException e) {
//            System.out.println(e);
//        } catch (IndexOutOfBoundsException e) {
//            System.out.println(e);
//        }
//----------------------------------------------------------
        //3.多个异常一次捕获,一次处理
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);//ArrayIndexOutOfBoundsException:3 索引越界异常
            List<Integer> list = List.of(1, 2, 3);
            System.out.println(list.get(3));//集合索引越界异常
        } catch (Exception e) { //直接写祖父
            System.out.println(e);
        }
        System.out.println("后续代码,可以执行");
    }
}

避免在finally中出现return

/*
    如果finally有return语句,永远返回finally中的结果,避免该情况
 */
public class Demo02Exception {
    public static void main(String[] args) {
        int a = getA();
        System.out.println(a);
    }

    //定义一个方法,返回变量a的值
    public static int getA() {
        int a = 10;
        try {
            return a;
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            //一定会执行的代码
            a = 100;
            return a;
        }
    }
}

子父类的异常

如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常额子类或者不抛出异常。
父类方法没有抛出异常,子类重写父类该方法时也不可以抛出异常,如果子类产生异常,只能捕获处理(try…catch),不能声明抛出(throw)
注意:
弗雷一场是什么样,子类异常就什么样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值