1.异常继承体系总结:
Throwable: 它是所有错误与异常的超类(祖宗类)
|- Error 错误
|- Exception 编译期异常,进行编译JAVA程序时出现的问题
|- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题
2.异常:
指程序在编译、运行期间发生了某种异常(XxxException),我们可以对异常进行具体的处理。若不处理异常,程序将会结束运行。
3.错误:
指程序在运行期间发生了某种错误(XxxError),Error错误通常没有具体的处理方式,程序将会结束运行。Error错误的发生往往都是系统级别的问题,都是jvm所在系统发生的,并反馈给jvm的。我们无法针对处理,只能修正代码。
4.抛出异常throw:
throw new 异常类名(参数);
hrow new NullPointerException("要访问的arr数组不存在");
throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出范围");
5.调用者声明异常:
将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲解该方式),那么必须通过throws进行声明,让调用者去处理。
声明异常格式:
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… { }
public void show(int x) throws Exception { };
多个异常的情况,例如:
public static int getElement(int[] arr,int index) throws NullPointerException, ArrayIndexOutOfBoundsException { };
6.捕获异常try…catch…finally:
(1)捕获异常的格式:
try { //异常检测的语句 } ------->该代码块编译可能会产生异常
catch (异常类 变量) { //异常处理语句 } ------->捕获声明的异常
catch (异常类 变量) { //异常处理语句 } ------->捕获声明的异常
catch (异常类 变量) { //异常处理语句 } ------->多chtch块捕获异常,catch捕获的不能是同一异常,而且如果异常有父子级关系,那么,子集异常在上,父级异常在下
finally { //一定会被执行的语句 } ------->无论异常是否发生,都必须执行的代码块
7.运行时期异常:
特点:
1.无需throw,无需处理
2.一旦发生,必须修改代码
注意:
1.父类抛异常,子类可抛可不抛。但是,如果抛,那么只能抛父类异常,或者父类异常的子类异常
2.父类不抛,那么子类也不能抛
8.异常中常用的方法:
String getMessage() ---返回异常的描述
String toString() ---返回异常的名称+描述
void printStackTrace() ---在控制台输出最全的异常信息
9.自定义异常:
public class MyException
{
public MyException(){ super(); }
public MyException(String message) { super(message); }
}