java11

今天复习一下java中的异常
1.异常就是程序在运行时出现的不正常情况
异常的由来:问题也是现实生活中一个具体的事物,也可以通过java类的形式进行描述。并封装成对象。
其实就是java对不正常情况进行描述后的对象体现。
对于问题的划分:两种;一种是严重的问题,一种是非严重问题。
对于严重的,java通过Error类进行描述。
对于Error一般不编写针对性的代码对其进行处理。
对于非严重的,java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
无论Error或者Exception都具有一些共性的内容。
比如:不正常情况的信息,引发的原因等。
Throwable
-----------Error
-----------Exception
异常的子类都是有父类异常作为后缀。
2.异常的处理
java提供了特有的语句进行处理
try{
需要被检测的代码
}
catch(异常类 变量){
处理异常的代码(处理方式)
}
finally{
一定会执行的语句
}
3.对捕获到的异常进行常见的操作
e.printStractTrace(); 异常信息,异常名称,异常出现位置

在函数上声明异常。
便于提高安全性,让调用者必须进行处理,不处理编译失败。

对多异常的处理。
1.声明异常时,建议声明为更加具体的异常,这样处理更加具体。
2.对方声明几个异常,就对应几个catch快。
如果对方多个catch块中的异常出现继承关系,父类异常catch块放在最下面

4.自定义异常
因为项目中会出现一些特有问题。
而这些问题并未被java所描述并封装对象。
所以对于这些特有问题可以按照java对问题封装的思想。
将特有问题进行自定义封装。
当在函数内部出现的throw抛出异常对象,那么就必须要给对应的处理动作。
要么在内部try catch处理
要么在函数上声明让调用者处理
发现打印的结果中只有异常的名称,却没有异常信息。
因为自定义异常并未定义信息。
如何定义异常信息呢?
因为父类中已经吧异常信息的操作都完成了
所以子类只要在构造时,将异常信息传递给父类通过super语句。
那么就可以直接通过getMassage方法获取自定义的异常信息。

自定义异常:
必须是自定义类继承Exception
继承Exception的原因:
异常体系有一个特点:因为异常类和异常对象都被抛出。
他们都具备可抛性,这个可抛性时Throwable这个体系中独有的特点。

4.throw和throws的区别
throw用在函数内,throws用在函数上
5.Exception中有一个特殊的子类异常RuntimeException 运行时异常。
如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过:
之所以不用在函数上声明,是因为不需要让调用者处理。
当异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望程序停止后对代码进行修正。
自定义异常时:如果该异常的发生无法在继续运算时,就让自定义异常继承RuntimeException。
6.try{
}catch(){
}finally{
一定执行得代码
}
7.异常在子类覆盖中的体现:
1.子类在覆盖父类时,如果 父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3.如果父类或者接口的方法没有抛出异常抛出,那么子类再覆盖时,也不可以抛出异常。
如果子类方法发生了异常。就必须要进行try处理,绝对不能抛。

猜你喜欢

转载自blog.csdn.net/qq_39127312/article/details/82997313