一、分类
RuntimeException:
AirthmeticExceptioon(算术异常)
NullPointerException(空指针异常)
ClasscastException(类转换异常)
ArrayIndexOutOfBoundException(数组越界异常)
IllegalArgumentException(非法参数异常)
IllegalStateException(违法状态异常)
NumberFormatException(数字格式异常)
Error(错误):
AssertionError(断言错)
ClassFormatError(类格式错)
OutOfMemoryError(内存不足)
StackOverFlowError(栈溢出)
ThreadDeath(线程结束)
二、throw和throws的不同。
1.throw用在方法中表示抛出一个异常。
语法:throw <异常对象>
throws用在方法名之后,表示此方法可能抛出异常。(异常可以有多个,用逗号隔开)
语法:[<修饰符>] <返回值类型> <方法名> ([<参数列表>]) [throws<异常类>]
2.两者都是消极处理异常的方式,只是抛出或可能抛出,但并未真正处理异常。
三、Finally
1.finally块中为必须要执行的操作 如:关闭网络连接、关闭打开的文件、关闭数据库连接
2.finally块中的代码在什么情况下不会执行?
1>.还未执行try-catch-finally就抛出了异常
2>.前面代码中使用了system.exit()退出程序
3>.程序所在的线程死亡
4>.cpu关闭
四、问答。
1、父类实现serializable接口时,派生类的所有属性都会被序列化,即:当父类实现序列化时,派生类默认实现序列化。
2、当派生类实现序列化时,父类的属性值丢失。