异常的继承体系
Throwable: 它是所有错误与异常的超类(祖宗类)
|- Error 错误
|- Exception 编译期异常,进行编译JAVA程序时出现的问题
|- RuntimeException 运行期异常, JAVA程序运行过程中出现的问题
异常与错误的区别
* a:异常
* 指程序在编译、运行期间发生了某种异常(XxxException),我们可以对异常进行具体的处理。
* 若不处理异常,程序将会结束运行。
b:错误
* 指程序在运行期间发生了某种错误(XxxError),Error错误通常没有具体的处理方式,程序将会结束运行。
解决程序中异常的手动方式
* a):编写处理代码 try...catch...finally
* b):抛出 throws
使用throw关键字具体操作
* a: 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
* b: 通过关键字throw将这个异常对象告知给调用者。throw 异常对象;
throw 用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。
方法声明异常关键字throws
修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… { }
try...catch异常处理
格式说明
* a: try
* 该代码块中编写可能产生异常的代码。
* b: catch
* 用来进行某种异常的捕获,实现对捕获到的异常进行处理。
* c: finally:
* 有一些特定的代码无论异常是否发生,都需要执行。
* 另外,因为异常会引发程序跳转,导致有些语句执行不到。
* 而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。
* d:try...catch...处理掉异常后,程序可以继续执行
多catch处理细节
* A:细节:多个catch小括号中,写的是异常类的类名,有没有顺序的概念?
* 有顺序关系。
* B:平级异常:
* 抛出的异常类之间,没有继承关系,没有顺序
NullPointerException extends RuntimeException
NoSuchElementException extends RuntimeException
ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException extends RuntimeException
* C:上下级关系的异常
* 越高级的父类,越写在下面
NullPointerException extends RuntimeException extends Exception
Throwable类方法
* A: 常见方法
* a:getMessage()方法
返回该异常的详细信息字符串,即异常提示信息
* b:toString()方法
返回该异常的名称与详细信息字符串
* c:printStackTrace()方法
在控制台输出该异常的名称与详细信息字符串、异常出现的代码位置
自定义异常:
格式:
class 异常名 extends Exception{ //或继承RuntimeException
public 异常名(){
}
public 异常名(String s){
super(s);
}
}