我们知道,在日常开发中,无论你使用寿命语言进行编程,都会不可避免的要处理异常,今天我们就试着来jvm异常怎么来处理的。
当异常不仅仅是异常
我们在标题中提到了异常,然而这里指的异常并不是单纯的Exception,而是更为宽泛的Throwable。只是我们工作中习以为常的将它们(错误地)这样称谓。
关于Exception和Throwable的关系简单描述一下
Exception属于Throwable的子类,Throwable的另一个重要的子类是Error
throw可以抛出的都是Throwable和其子类,catch可捕获的也是Throwable和其子类。
除此之外,但是Exception也有一些需要我们再次强调的
Exception分为两种类型,一种为Checked Exception,另一种为unchecked Exception
Checked Exception,比如最常见的IOException,这种异常需要调用处显式处理,要么使用try catch捕获,要么再次抛出去。
Unchecked Exception指的是所有继承自Error(包含自身)或者是RuntimeException(包含自身)的类。这些异常不强制在调用处进行处理。但是也可以try catch处理。