Exception和Error的异同
其实这是一个常见的面试题
- 首先,两者都及继承了Throwable类,Throwable类是所有异常类的顶级父类。在java中,只有Throwable类的实例才可以被抛出或者捕获,它是异常处理机制的基本组成类型。
- Exception是程序运行中可以预料到的意外情况,可能并且应该被捕获并进行相应处理。Error是指比较严重的错误,正常情况下不大可能会出现,一旦出现了也不需要进行捕获,常见的Error有OutOfMemory之类的,都是Error的子类。
- Exception又分为可检查异常(checked)和不检查异常(unchecked)。可检查异常在源代码里必须显式的进行捕获处理,是编译期检查的一部分,常见的例如IOException、FileNotFoundException、SQLException等;不检查异常就是所谓的运行时异常(RunTimeException),常见的有NullPointException、ArrayIndexOutOfBoundsException、ClassCastException、ArithmeticException、IllegalArgumentException等。不检查异常通常是由于代码逻辑不正确所造成的问题,可通过严谨的思维逻辑进行有效的避免