概念:就是程序出现了不正常的情况。java中将一些可遇见的不确定的情况,封装成类,这种类叫做异常类。

    生成异常:
    (1)当瞒住了异常的条件时,会执行以下操作:

    • 创建异常对象
    • 抛出异常对象

    执行这两个功能后,叫做产生了异常,但这个过程是java自动做的(java异常处理机制),见不到

    处理方式:
    (1)捕获异常
    (2)抛出异常

    java中涉及的异常以及错误的类有一个完整和庞大的处理机制
    异常和错误的类有以下结构:
    Throwabl —异常和错误的顶级父类
    两个子类—Error:代码无法处理的错误,比如服务器宕机
    —Exception:通常代码的调试可以处理的异常
    —IOException,FileNotFoundException。。。

    运行时异常:编译的时候没问题,运行时出现异常。(非检查性异常)
    编译异常:编译的时候就出现异常。(检查性异常)

    异常在继承中的使用和注意事项:
    (1)子类在重写父类的方法的时候,子类的方法必须抛出相同的异常或者是父类的子类
    (2)子类中的方法重写父类中的方法时,异常抛出必须小于父类的方法抛出的异常
    (3)在捕获异常的时候,可以使用父类的异常引用指向子类的异常对象,是多态体现(向上转型)
    (4)当异常处理的时候,捕获处理,前面的异常类不能是后面的异常类的父类,—也就是在多异常catch的时候,遵循从小到大的原则
    (5)所有异常的父类是Exception
    (6)如果父类中的方法抛出了多个异常,子类重写的时候,只能抛出相同的异常或者他的子类异常,子类不能抛出父类中没有的异常。
    (7)如果父类中被重写的方法没有抛出异常,子类中的方法绝对不可以抛出异常
    (8)如果子类中的方法发生异常,只能通过try/catch自行处理。不能throws
    (9)finally中,有回调函数的味道。它在方法结束之后,再次执行finlly代码,可能会将上面的的代码覆盖

    自定义异常
    **
    (1)程序员自己定义的异常在异常处理中可以实现,好处是比较灵活
    (2)自定义异常类—未满18岁异常
    (3)定义一个异常类继承父类Exception
    image.png

    image.png