一、Throwable的子类包含哪两类?简述Java Error类与Exception类的区别。
1、Error: 致命异常。在正常情况下,不大可能出现的情况。标识系统发生了不可控的错误。程序无法处理,只能人工介入。例如, 虚拟机产生的错误StackOverflowError、OutOfMemoryError。
2、Exception: 非致命异常。程序可处理。分为受编译器检测的checked异常(受检异常)和不受编译器检测的unchecked异常(非受检异常)。
二、Exception又分为checked异常和unchecked异常,请分别举例说明。
1.受检异常(checked exception)在编译时需要检查的异常,需要用try-catch或throws处理。
2.非受检异常(unchecked exception)不需要在编译时处理的异常。在java中派生于Error和RuntimeException的异常都是unchecked exception。
三、请查阅资料,简述StackOverflowError和OutOfMemoryError两类错误的发生情形和原因。
1.StackOverflowError :是栈溢出。如果程序使用的栈深度超过虚拟机分配给线程的栈大小,抛出该错误。
2.OutOfMemoryError:是内存溢出。如果程序在对应栈中无法申请到足够的内存空间,抛出该错误。
四、简述异常处理的两种方式,并举例说明区别。
六、异常中的throws声明与throw语句的区别是什么?请举例说明。
throw:表示方法内抛出某种异常对象
throws:方法的定义上使用 throws 表示这个方法可能抛出某种异常
七、finally子句的作用是什么?
finally是组合语句的统一出口,一般用来进行一些善后清理操作,例如清理资源、释放连接、关闭文件、管道流等操作。它是可选的部分,但一旦选定,必定执行。