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

异常注意事项--子父类异常

复制代码
public class Fu {

        public void show01() throws NullPointerException,ClassCastException{}
        public void show02() throws IndexOutOfBoundsException{}
        public void show03() throws IndexOutOfBoundsException{}
        public void show04(){}
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 showe4(){
        try {
            throw new Exception("编译期异常");
        } catch (Exception e) {
         e.printStackTrace();
        }
        }
    }
复制代码
复制代码
package com.learn.demo03.Exception;
/*
    子父类的异常:
        - 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
        - 父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
    注意:
        父类异常时什么样,子类异常就什么样
 */
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 @   漁夫  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示