------- android培训、java培训、期待与您交流! ----------
通过今天对java语言异常的学习,我来给自己的学习内容做下简单直白的总结:
首先,我来总结下异常和异常的由来:
异常:程序在运行的时候出现了不正常情况...
异常的由来:因为问题也是现实生活中的一个具体事物,就可以通过java类的形式进行描述,并封装成对象.(也就是对问题的描述,将问题进行对象的封装)
异常的划分:一种是严重性的(error类)...一种是非严重的(Exception类)...
不管严重还是非严重的,都有共性的描述,也就是它们的父类 Throwable类..这里我们重点是学习Exception类
异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性..也就是说异常体系中的类和建立的对象,都能被throw和throws所操作..java中只有异常体系具备这个提点..
在程序中如果有问题而又没处理的情况下,java的虚拟机会调用默认的异常处理机制—停止程序并打印错误的异常信息
但我们怎样才能在程序中去处理已有的问题来保证程序的正常运行 ——有2种方法:
抛出异常,有调用者去处理...还有就是捕捉异常去处理,对于捕捉异常处理,java给我们定义了语句:
try{需要被检查的代码} catch(异常类 变量){处理的方式} finally{一定会执行的语句}
throws和throw的用法(区别):
throws定义在函数上,后面跟的是异常类。可以跟多个..
throw定义在函数内,后面跟的是异常对象...
注意:当函数内部有throw抛出了异常对象,内部并未进行try处理的时候,要在函数上声明..
对多异常的处理:
声明异常的时候,建议声明更具体的异常,这样处理的可以更具体...
对方声明了几个异常,就应该有几个catch块...父类的异常catch块放在最下面...
对自动义异常的总结:
当我们在项目中,有可能会出现一些自己定义的特有问题,而这些问题并没有被java所描述并封装成对象...这时,我们可以按照java对问题封装的思想,将这些问题进行自定义的异常封装...
注意:自定义异常的时候,一定要手动抛出自定义的异常对象...当函数内部出现了throw抛出异常对象的时候,那么就要必须给出异常的处理动作了...要么在函数内部try catch处理,要么在函数上声明抛出,让调用者去处理...
在一般情况下,函数内部抛出了异常对象,函数上要声明...
自定义异常必须要继承异常体系,因为只有该体系才具备可抛性这个独有特点..
Exception类中有一个特殊的 子类异常RuntimeException:是运行时的异常...
如果在函数内抛出了该异常对象,函数上可以不用声明,编译一样会通过...
如果在函数上声明了该异常,调用者不用对异常进行处理(try或者throws),编译一样通过...
扩展:在自定义异常的时候,如果该异常的发生导致无法再继续下面的运算,就让自定义异常继承RuntimeException..
总结:通过以上对Exception异常的总结,我们可以看出,对于异常分了2种:
编译时期被检测的异常...编译时期不被检测的异常(运行时的异常,RuntimeException以及其子类)..
对于异常在子父类覆盖中的体现:
1,子类在覆盖父类方法的时候,如果父类的方法抛出了异常,那么子类的覆盖方法只能抛出父类的异常或者父类异常的子类...如果子类在内部确实有另外的异常时,只能在内部处理...
2,如果父类或者接口方法中,没有抛出异常,那么子类在覆盖方法时,也不能抛出异常..如果子类方法发生了异常,也只能在内部去处理....
异常的好处:通过以上我们可以看出,异常将问题进行了对象的封装,也将正常流程代码和问题处理代码相分离,方便了阅读...通过本课的学习,以上我异常的各个方面都做了一一总结,希望能对自己和大家提供些小小的帮助..