1. Throwable的子类包含哪两类?简述Java Error类与Exception类的区别。
Error:致命异常。标识系统发生了不可控的错误。程序无法处理,只能人工介入。例如, 虚拟机产生的错误StackOverflowError、OutOfMemoryError。
Exception: 非致命异常。程序可处理。分为受编译器检测的checked异常(受检异常)和不受编译器检测的unchecked异常(非受检异常)
2. Exception又分为checked异常和unchecked异常,请分别举例说明。
将派生于Error或者RuntimeException的异常称为unchecked异常,所有其他的异常成为checked异常。
Checked异常继承java.lang.Exception类。Unchecked异常继承自java.lang.RuntimeException类。
3. 简述StackOverflowError和OutOfMemoryError两类错误的发生情形和原因。
StackOverFlowError:堆栈溢出错误一般是递归调用。
4. 简述异常处理的两种方式,并举例说明区别。
声明抛出处理:声明抛出 throws 声明抛出的位置:是在方法声明的位置上使用throws关键字向上抛出异常。
程序捕捉处理:try…catch…
try{
可能出现异常的代码;
}catch(异常类型1 变量){
处理异常的代码;
}
5. 异常中的throws声明与throw语句的区别是什么?请举例说明。
throw:指的是语句抛出一个异常。
throws:指的是方法可能会抛出的异常的声明。