---异常---
- 异常:就是不正常,程序运行时出现的不正常情况,其实就是程序出现了问题,
这个问题按照面向对象的思想进行描述,并封装成了对象,因为问题的产生有产生的原因,
有问题的名称,有问题的描述等多个属性信息存在,当出现多属性信息最方便的方式就是讲这些信息进行封装,
异常就是java按照面向对象的思想将问题进行对象封装,这样就方便于操作问题及处理问题
- 出现的问题有很多种,比如角标越界,空指针等都是,就对这些问题进行分类,而且这些问题都有共性内容
比如:每一个问题都有名称,同时还有问题描述的信息,问题出现的位置,所以可以不断的向上抽取,现成了异常体系
- 这个体系中所有的类都具备一个独有的特点就是可抛性
- 可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作
- 在开发时,如果定义功能时,发现该功能会出现一些问题,应该将该问题在定义功能时标示出来,这样调用者使用时预先给出处理方式
- 处理方式:1.捕捉 2.抛出
try{
需要被检测的代码;
}
catch(异常类 变量名){
异常处理的代码;
}
finally{
一定会执行的代码;
}
- 异常处理原则:功能抛出异常,功能调用如果进行try处理,需要与之对应的catch处理代码块,这样的处理有针对性,抛几个就处理几个
- 特殊情况:try对应多个catch时,如果有父类的catch语句块,一定要放在最下面
- throw用于抛出异常对象,后面跟的是异常对象,throw用在函数内
- throws用于抛出异常类,后面更的异常类名,可以跟多个,用逗号隔开,throws用在函数上
- 功能内部如果出现异常,如果内部可以处理,就用try,如果不能处理就必须声明出来,让调用者处理,使用throws抛出
- 自定义异常:项目中出现了java中没有定义过的问题时,这时就需要我们按照java异常建立思想,将项目中的特有问题进行封装,这个异常叫做自定义异常
- 自定义异常的步骤:定义一个子类继承Exception或RuntimeException,让该类具备可抛性,通过throw或throws进行操作
- 异常转换思想:当出现的异常是调用者处理不了的,就需要将此异常转换为一个调用者可以处理的异常抛出
- 当子类覆盖父类的方法时,如果父类的方法抛出异常,那么子类方法要么不抛出异常要么抛出父类异常或者给异常的子类,不能抛出其他异常
- 如果父类抛出多个异常,那么子类在覆盖时只能抛出父类的异常子集
- 如果父类或者接口中的方法没有抛出过异常,那么子类是不可以抛出异常的,如果子类的覆盖方法中出现了异常,只能try不能throws
- 如果这个异常子类无法处理,已经影响了子类方法的具体运算,这时可以在子类方法中通过throw抛出RuntimeException异常或者子类异常
- 常见异常
--角标越界异常(IndexOutOfBoundsException)
--空指针异常(NullPointerException)
--类型转换异常(ClassCastException)
-异常要尽量避免,如果避免不了,需要预先给出处理