学习毕向东java第十天

学习毕向东java第十天


p14
异常处理
异常:其实就是会出现的问题,一般把问题以严重程度做区分,如果严重的话,就用error类,不严重的话,就用exception类来描述。
当一个异常被评断为:error的时候:java一般不会写针对性的代码来处理(毕竟是比较大的问题了
而一个异常被评断为:exception的时候:java会写针对性的代码(因为“小毛病”可以处理

而不管是error还是exception 都会向上整合形成一些共性的特征,这就是异常类的出现:在API的java.lang 中 有一个throwable 类,其中包含 error 和exception 这两个子类。

try{
}
catch(){
}
finally{
}
如果出现异常的话,会在try函数中,产生一个异常(new XXXexception)
然后通过 catch 来接收这个异常 。如何接收:即在catch的括号里,定义一个异常类型的变量 用来赋值)
exception e =new XXXexception;

多异常处理:即在throws(抛出异常的时候)可以多写几个你觉得可能会存在的异常,且为了这些异常能够被区分,最好将异常名写的具体一些。且由于多态的关系,需要将父类异常部分放在catch的最后面。

自定义异常
因为在一些实际生活问题当中,会存在一些需要自己定义的异常情况,所以就需要编写者自己来创建一个继承exception类的异常类来处理。且用户自定义的异常是不会被java自动抛出,需要手动使用 throw(注意,不是throws)抛出。 即(throw new XXX())

一个比较关键的知识点
当手动定义一个异常类的时候,因为这个类是继承于exception,而exception 则是继承自throwable。而这个最后的父类已经把异常信息的操作都做完了,子类只要在构造的时候,将异常信息传递给父类,(通过 super 父类自己会通过getMessage来获取)

throw 和throws 的区别
throw是在创建一个自定义异常之后,需要被抛出异常对象的时候 抛出。(使用在函数内)
而throws 则是抛出一个异常类的变量吧。(使用在函数上)

finally
是一些肯定会被执行的代码。
存在的意义在于:当有些异常出现之后,希望离开停止程序,让之后的代码就不再运行,而同时又希望有部分代码依然可用运行(甚至起到说明程序出现异常的情况)
让一段程序能有始有终(比如数据库的开启,异常,最后的finally结束)

异常中存在的覆盖
1.子类在覆盖父类的时候,**子类的覆盖方法(重点是这个)**只能抛出父类的异常或者父类异常的子类。
即:父类存在 Aexception
而 Aexception extends Bexception
这样的话 子类的覆盖方法只能抛出 Aexception 或者 Bexception
(因为子类是覆盖父类的,父类中的方法都存在一个异常了,子类肯定也会存在这个异常或者这个异常的子类)

2.如果父类抛出多个异常,子类也只能抛出父类中多个异常的子类
3.如果父类或者实现的接口并未抛出异常,那么子类在覆盖方法的时候,也不可以抛出异常。

当函数内容中有throw(即抛出的是异常对象)抛出异常对象时,并未进行异常处理。必须要在函数上声明,否则会编译失败。除了:RuntimeException 。
对异常的处理:1.throw 抛出 2.try 处理

重点截屏
学习毕向东java第十天
在这里记录一下,记得看p27