异常
就是在运行期间发生不正常的情况。
在java中类的形式对不正常的情况进行了描述和封装对象,描述不正常情况的类,就称为异常类。
异常类和正常流程代码分离,提高阅读性。
其实异常就是java通过面向对象的思想将问题封装成了对象。用异常类对其进行描述。
不正常情况分为两类:
一般不可以处理的:Error
可以处理的: Exception
Throwable :无论是error,还是异常,问题,问题发生就应该可以被抛出,让调用者知道并处理。
可抛型指的是什么?如何体现?
throws,throw,凡是可被这两个关键字操作的类都具有可抛型。
该体系的特点:子类的后缀名都是用其父类作为后缀。阅读性很好。
throws 和 throw的区别
1. throws 用在函数上,throw使用在函数内。
2. throws 抛出的是异常类,可以抛出多个,用逗号隔开。 throw抛出的是异常对象。
异常的分类
1.编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。这种问题一旦出现,希望在编译时就检测,让这种问题有对应的处理方式。可以针对性处理。
2. 编译时不检查异常,运行时异常:就是Exception中的RuntimeException和其子类,这种问题的发生,无法让功能继续,运算无法进行。更多的是因为调用者的原因导致的或者引发了内部状态改变导致的。那么这种问题一般不出来,直接编译通过,在运行时,让调用者调用程序时的程序强制停止,让调用者自己对代码进行修正。
异常处理原则
1.函数内容如果抛出需要检测的异常,那么函数上必须声明。否则必须在函数内调用 try catch进行捕捉否则编译失败。
2. 如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败。
3.何时try catch 何时throws?
功能内容可以解决,用try catch。解决不了用throws告诉调用者,让调用者解决。
4.一个功能如果抛出了多个异常,那么调用时,必须有对应多个try catch进行针对性的处理,内部有几个需要检测的异常,就抛出几个异常,抛几个catch几个。
异常的注意事项
1.子类在覆盖父类方法时,父类方法如果抛出了异常,那么子类方法只能抛出父类的异常或者该异常的子类。
2.如果父类抛出多个异常,那么子类只能抛出父类异常的子集。
子类覆盖父类只能抛出父类的异常或者子类或者子集。
如果父类没有抛出异常,那么子类绝对不可以抛,只能try catch。
try catch 捕获异常
异常处理的捕捉形式 这是可以对异常进行针对性处理的方式
try{
//需要被检测异常的代码
}catch(异常类变量) //该变量用于接受异常的对象 {
//处理异常的代码
}finally{
//一定会被执行的代码 }
多catch 父类catch放最下面
网友评论