Java中父子异常的处理

捕获多个异常:

* 多个异常使用捕获又该如何处理呢?

  1. 多个异常分别处理。
  2. 多个异常一次捕获,多次处理。
  3. 多个异常一次捕获一次处理。直接在写上catch(Exception e)

  一般我们是使用一次捕获多次处理方式,格式如下:

  ```java
  try{
       编写可能会出现异常的代码
  }catch(异常类型A  e){  当try中出现A类型异常,就用该catch来捕获.
       处理异常的代码
       //记录日志/打印异常信息/继续抛出异常
  }catch(异常类型B  e){  当try中出现B类型异常,就用该catch来捕获.
       处理异常的代码
       //记录日志/打印异常信息/继续抛出异常
  }
  ```

  > 注意:
  *这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。

------------------------------------------------------以下参考博客大佬的,走你--------------------------------------------------------------------

父子异常的处理

一、子类方法只能抛出父类方法的异常或者是其子异常(对于这种限制,主要是因为子类在做向上转型的时候,不能正确地捕获异常)

二、子类构造器必须要抛出父类构造器的异常或者其父异常(这是因为子类构造器中默认添加了父类的构造器)

三、异常丢失

1、在finally中抛出异常,可能会之前抛出的异常丢失

package thinkinginjava;

public class FinallyException {
    public static void main(String[] args){
        try{
            try{
                throw new RedException();
            }finally{
                //把上一个异常覆盖掉
                throw new BlueException();
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }
}

class RedException extends Exception{}
class BlueException extends Exception{}

运行结果:thinkinginjava.BlueException 

2、在finally中使用return,不会抛出异常

package thinkinginjava;

public class ReturnException {
    public static void main(String[] args){
        try{
            throw new Exception();
        }finally{
            return;
        }
    }
}

以上代码我们看到它抛出了异常,但运行时不会有任何输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值