java-异常篇
Throwable
|--Error:较严重,对于Error一般不编写针对性的代码对其进行处理。
|--Exception:较轻,对于Exception可以使用针对性的处理方式进行处理。
异常的处理
两种方法:一:catch()捕获,二:throws (方法名上抛出)异常。否则编译出错!!!!
对于部分代码块处理方式:(这里是throw)
java 提供了特有的语句进行处理。
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;//除非之前执行System.exit(0);代码
//通常用于关闭资源。
}
对于方法上的处理:(这里是throws)
方法名 ( ) throws ArithmeticException ,ArrayIndexOutOfBoundsException
{ .... }
对捕获到的异常对象进行常见方法操作:
String getMessage():获取异常信息。
对多异常的处理:
1,声明异常时,建议声明更为具体的异常。这样处理的可以更具体。
2,对方声明几个异常,就对应有几个catch块。不要定义多余的catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
注意:建立在进行catch处理时,catch中一定要定义具体处理方式。
不要简单定义一句 e.printStackTrace(),
也不要简单的就书写一条输出语句。
异常抛出的原则:
1,仅有一个与异常对应catch模块执行,剩下的catch模块不会执行。且
Java只对第一个发现的异常进行catch,不再继续执行下去,即后面
可能出现异常的代码不再执行,并catch它。
2,具有父类的catch模块要放到最后面,否则无法编译过去。
3,对于抛出(throws)的异常必须catch处理,或者主函数将其抛出。
自定义异常:
必须是自定义类继承Exception。(因为只有这样才可以执行throws和throw操作。)
运行时异常:RuntimeException
Throwable
|--Error
|--Exception
|-- RuntimeException
异常在子父类覆盖中的体现;
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。