首页 > IT职业 > IT职场 > Exception和Error
Throwable是Exception和error的父类。而Exception和error的作用不同,这里的两个不同的子类体现的是异常中分类的思想。

如上图所示,Exception和Error的分类依据是对于会出现问题带代码我们是否应该捕获。
对于Exception我们是应该捕获的,不过Exception中也可以进行分类,分类的一句是是否能检查,也就是该异常是在编译器就知道还是在运行时才能知道。
对于在编译期就可以知道的异常就是可检查的异常,比如ClassNotFoundException
对于在编译期不知道,在运行时可能会出现的异常就是运行时异常,比如
NullPointerExceptionArrayIndexOutOfBoundExceptionClassCastException对于有些错误出现了我们是不能处理的,很多都是jvm虚拟机自身出了问题,对于这样的问题即使我们能捕获也是处理不了的,所以这些不可捕获的类别就通过Error来定义。比如说下面的几个错误
OutOfMemoryErrorStackOverFlowErrorNoClassDefFoundErrorpackage example;
public class TestThrow {
public static void main(String[] args) {
one();
}
public static void one() throws ArithmeticException{
try {
int i = 1 / 0;
} catch (ArithmeticException e) {
throw new ArithmeticException("by / zero");
}
}
}
Throw一定是抛出了某种异常。ClassNotFoundException是一个检查异常,比如下面的代码package example.classobject;
import org.junit.Test;
public class ClassObject {
@Test
public void testException () throws ClassNotFoundException {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
}
上面的代码去加载mysql数据库驱动,如果没有加载到就会出现类没有找到的异常
NoClassDefFoundError是Error,这里说明是可以代码可以通过编译,但是实际运行的是在发现找不到编译后的class就会出现这个错误.来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3034/viewspace-2824955/ ,如需转载,请注明出处,否则将追究法律责任。