异常注意事项_子父类异常和自定义异常类

子父类的异常:
- 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
- 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
注意:
父类异常时什么样,子类异常就什么样

public class Fu {
    public void show01() throws NullPointerException,ClassCastException{}
    public void show02() throws IndexOutOfBoundsException{}
    public void show03() throws IndexOutOfBoundsException{}
    public void show04() throws Exception {}
}
 
class Zi extends Fu{
    //子类重写父类方法时,抛出和父类相同的异常
    public void show01() throws NullPointerException,ClassCastException{}
    //子类重写父类方法时,抛出父类异常的子类
    public void show02() throws ArrayIndexOutOfBoundsException{}
    //子类重写父类方法时,不抛出异常
    public void show03() {}
 
    /*
        父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。
     */
    //public void show04() throws Exception{}
 
    //此时子类产生该异常,只能捕获处理,不能声明抛出
    public void show04()  {
        try {
            throw  new Exception("编译期异常");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

自定义异常类

为什么需要自定义异常类:

我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。

在上述代码中,发现这些异常都是IDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?

 

自定义异常类;
  java提供的异常类,不够我们使用,需要自己定义一些异常类

格式:
  public class XXXExcepiton extends Exception / RuntimeException{

添加一个空参数的构造方法

添加一个带异常信息的构造方法

注意:

  1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类

  2.自定义异常类,必须的继承Exception或者RuntimeException

    继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部批出了编译期异常,就必须处理这个异常,要么throws ,要么try . ..catch

    继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)

public class Excetepion extends Exception{
    public Excetepion() {
        super();
    }

    //  添加一个带异常信息的构造方法
    //  查看源码发现,所有的异常类都会有一个带异常信息的构造方法,方法内部会调用父类带异常信息的拘造方法,让父类来处理这个异常信息*/
    public Excetepion(String message) {
        super(message);
    }
}

 

posted @ 2022-07-07 11:30  夫君  阅读(58)  评论(0)    收藏  举报