-
什么是异常
java中提供的一种识别及响应错误的一致性机制
-
Error和Exception的区别
Errror是程序正常运行中,不大可能出现的错误, 通常是虚拟机相关错误,如系统崩溃,堆栈溢出等, 编译器不会对这类错误进行检测,应用程序也不应对这类错误进行捕获, 一旦这类错误发生,应用程序会被禁止且靠应用程序本身无法恢复 Exception是程序正常运行中,可以预料的意外情况, 通常遇到这种异常,应对其进行处理,使应用程序可以继续正常运行
-
什么是运行时异常,编译时异常
Exception可以分为两类:运行时异常和编译时异常 运行时异常:(属于非受检异常) 定义:RuntimeException类及其子类 特点:java编译器不会检查它,即使没有抛出或捕获,也会编译通过, 如空指针异常,数组下标越界异常,类型转换异常等,一般由程序逻辑错误引起, 需要修改代码来进行避免 编译时异常: 定义:Exception中除RuntimeException类及其子类以外的异常 特点:java编译器会检查它,通常要通过throws进行声明抛出或通过try-catch进行捕获处理, 否则不能编译通过
-
什么是受检异常和非受检异常
受检异常:编译器必须处理的异常,通过throws抛出或通过try-catch捕获处理,否则编译不通过 (包括Exception中除RuntimeException类及其子类以外的异常) 非受检异常:编译器不会进行检查且不要求必须处理的异常, 即使不使用throws抛出或try-catch捕获也会编译通过 (包括RuntimeException类及其子类和错误(Error)) -
如何选择异常类型
可以解决---------捕获异常 是否解决不了某些异常问题: 必须处理---声明受检异常 解决不了---------调用者是否必须处理 不是必须处理---抛出运行时异常(非受检异常)
-
throw和throws的区别是什么
1. throw关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常 2. throws关键字用于方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表
-
try-catch-finally中,如果catch中return了,finally还会执行吗
会,在return前执行
-
Java常见异常有哪些
Error: java.lang.OutofMemoryError:内存不足异常 java.lang.StackOverflowError:堆栈溢出异常 Exception: IOException:IO异常 RuntimeException: NullPointerException:空指针异常 ClasslastException:类转换异常 IndexOutofBoundsException:索引越界异常
-
什么是NoClassDefFoundError
Java尝试加载类的时候找不到类的定义,要查找的类在编译时存在,运行时却找不到了, 就会导致NoClassDefFoundError 原因: 打包过程漏掉了部分了类或jar包出现损坏或者篡改 解决:查找那些开发期间存在于类路径下但运行期间却不在类路径下的类
-
什么是ClassNotFoundException
Java使用反射在运行是动态加载类,如果该类在类路径没有被找到就会报该异常, 通常都是类名书写错误 或当一个类已经被某个类加载器加载到内存中,此时另一个类加载器又尝试着动态的从同一个包中加载这个类, 通过控制动态类加载过程可以避免



