JAVA面试
Exception和Error有什么区别?
JAVA异常体系
在java中只有Throwable类型的实例才可以被throw或者catch,它是异常处理的基本组成类型。
-
Exception
程序正常运行中,可以预料的意外情况,可能并且应该被捕获,并且进行相应的处理
-
Error
在正常情况下,不太可能出现的情况,绝大部分的Error都会导致程序处于非正常的不可恢复的状态下。
检查异常(checked exception)和未检查异常(unchecked exception)
Error和RuntimeException及其子类成为未检查异常
(unchecked),其它异常成为已检查异常
(checked)。
NoClassDefFoundError 和 ClassNotFoundException 有什么区别
-
ClassNotFoundException
当动态的加载Class的时候找不到类时会抛出异常,属于Exception类。主要发生在使用
Class.forName()、ClassLoader.loadClass() 或 ClassLoader.findSystemClass()
来加载类的时候。 -
NoClassDefFoundError
当编译成功,执行过程中Class找不到类导致抛出该错误,由JVM的运行时系统抛出
异常处理
异常处理的关键字:try、catch、finally、throw、throws
-
try-catch-finally
遇到异常直接进行catch,然后执行finally
try{ ///可能会抛出异常的代码` }catch(Type1 id1){ //处理Type1类型异常的代码` }catch(Type2 id2){ //处理Type2类型异常的代码` }finally{ // 回收资源 }
-
throw
手动抛出异常
throw new Exception()
-
throws
用于方法签名中
public void f() throws ClassNotFoundException,IOException{}