什么是异常,java代码在运行时期发生的问题就是异常

java把异常信息都封装成了一个类,当问题出现时,就会创建异常类的对象,并抛出相关的错误信息

异常的继承体系

Throwable 是所有异常类的父类(超类)

Error(错误),Exception(异常)都是 Throwable 的子类

* Exception 异常, 感冒, 阑尾炎
*     将异常处理掉, 可以继续执行
* Error 错误, 非典, 艾滋, 癌症
*     必须修改程序

当main方法接收到异常时,会有两种处理方式

  1. 自己处理
  2. 自己处理不了,交给JVM处理

JVM是怎么处理异常的

JVM:

  1. 创建了异常的对象,new ArrayIndexOutOfBoundsException(3)
  2. 将异常对象进行抛出,抛出给方法的调用者

注意:一旦异常被抛出了,后面的所有程序,就不再执行了,一直向上抛,直到抛到JVM中,JVM收到异常后,做了两件事请:1. 将异常信息,以红色字体输出到控制台,2. 将程序停止,结束

如果有try catch 就不是将异常向上抛了,而是抛给catch

如果可能抛出多个不同的异常,可以使用多catch来捕获,类似链式代码

例:

try {
	// ...
} catch (NullPointerException e) {
  // ....
} catch (ArrayIndexOutOfBoundsException e) {
  // ...
}

// 这里抛出什么异常就会进入到对应的异常的catch中,也就是被对应的异常捕获到