概念:就是程序出现了不正常的情况。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