异常小结
异常:就是程序在运行时出现不正常情况。
异常由来:问题也是现实生活中一个具体事务,也可以通过java
的类的形式进行描述,并封装成对象。其实就是Java对不正常情
况进行描述后的对象体现。
对于问题的划分:两种,一种是严重的问题,一种是非严重问题
<1> java通过Error类进行描述.
对于Error一般不编写针对性的代码对其进行处理。
<2>对于非严重的,java通过Exception类进行描述
对于Exception可以使用针对性的处理方式进行处理。
无论Errror或者Exception都具有一些共性内容。
比如:不正常情况的信息,引发原因等。
Throwable :Error Exception
异常处理
Java提供了特有的语句进行处理。
try {需要被检测的代码;}
catch(异常类 变量){处理异常的代码(处理方式);}
finally{一定会执行的语句}
对捕获到的异常对象进行常见方法操作。
String getMessage();获取异常信息。
<1> s.o.p(e.getMessage());
<2> s.o.p(e.toString());
<3> e.printStackTrace();
在函数上声明异常:便于提高安全性,让调用者进行处理,不处理则编译失败。
对多异常的处理。
<1> 声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
<2> 对方声明有几个异常,就对于有几个catch块。不要定义多余的catch块
如果多个catch块中的异常出现继承关系,父类catch块放在最下面
建议:在进行catch处理时,catch中一定要定义具体处理方式。
不要简单的定义一句e.printStackTrace();也不要简单的就写一条输出语句。
因为项目中会出现特有的问题,而这些问题并未被java所描述,所以对这些特有的问题可以按照java对问题封装的思想,将特有的问题,进行自定义的异常封装。
自定义异常:
<1>:需求在本程序中,对于除数是负数,也是为是错误的是无法进行运算的,那么就需要对这个问题进行自定义描述。
当在函数内部出现了throw抛出异常对象,那么就必须要给出对应的处理动作。
要么在内部try catch处理
要么在函数上生命让调用者处理。
一般情况下,函数内出现异常,函数上要声明。
<2>发现打印的结果中 只有异常的名称,却没有异常的信息,因为自定义的异常并未定义所属信息。
如何定义异常信息呢?:
因为父类中已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类 通过super语句。那么就可以直接通过getMessage方法获取自定义的异常信息了。
<3>自定义异常:必须是自定义类继承Exception。
继承Exception的原因:
异常体系有一个特点:因为异常类和异常对象都被抛出,它们都具备可抛性。这个可抛性是Throwable这个体系中的独有特点。
只有这个体系中的类和对象才可以被throw和throws操作。
<4> throw 和throws的区别:
throws 使用在函数上 ;throw 使用在函数内 ;
throws 后面跟的是异常类,可以跟多个, 用“,”隔开。
throw后跟的是异常对象。
<5> Exception中有一个特殊的子类异常RuntimeException 运行时异常。 如果在函数内抛出该异常,函数上可以不用声明,编译一样通过。 如果再函数上声明了该异常,调用者可以
不用进行处理,编译一样通过。
之所以不用在函数上声明,是因为不需要让调用者处理。当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码进行修正。
<6> 自定义异常时:如果该异常的发生,无法再继续进行运算。那么就让自定义异常继承RuntimeException。
<7> 对于异常 分两种:
编译时被检测的异常。
编译时不被检测的异常(运行时的异常。RuntimeException以及其子类) |
|