1.异常体系
JDK 中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有异常对象都是派生于Throwable类的一个实例。如果内置的异常类不能够满足需要,还可以创建自己的异常类。
Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。
先来看看java中异常的体系结构图解:
2. Throwable
Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常。其中异常Exception又分为运行时异常(RuntimeException)和编译时异常。
Error和运行时异常,因为程序在编译时不检查异常,所以又称为不检查异常(Unchecked Exception)。
编译时异常,因为程序在编译时异常可以被检查出,所以又称为可检查异常(Checked Exception)
Throwable常用方法介绍:
方法名 | 描述 |
---|---|
public String getMessage() | 返回此throwable的详细消息字符串。 |
public String toString() | 返回此 throwable 的简短描述 |
public void printStackTrace() | 打印异常的堆栈的跟踪信息 |
3.Error(错误)
Error类是java所有错误类的父类,描述了java运行时系统内部错误和资源耗尽错误。这类错误是我们无法控制的,同时也是非常罕见的错误,表明系统JVM已经处于不可恢复的崩溃状态中,它是由JVM产生和抛出的,比如OutOfMemoryError、ThreadDeath等。
所以错误是很难处理的,一般的开发人员(当然不是你)是无法处理这些错误的,我们在编程中,可以不去处理这类错误。
以下是一些常见的Error案例:
【示例】内存溢出案例
public class ExceptionDemo {
public static void main(String[] args) {
// 数组需要1G的内存,这样子就会造成内存溢出
int[] but