java异常类
object
Throwable
VirtualMachineError
StackOverflowError
IOError
Exception
ExceptionSubClass(Exception的直接子类,也称编译时异常/受检异常/受控异常)
RuntimeException(运行时异常/未受检异常/非受控异常)
-
NullPointException
-
ClassCastException(类转换异常)
-
illegalArgumentException
-
NumberFormatException(数字格式化异常)
-
-
所有Exception的直接子类都称为编译时异常。编译时异常因它必须在编译阶段进行处理而得名,若不处理,则编译器报错。但它发生在运行阶段,所有的异常实质上都是new了一个异常对象,所以所有的一场都是发生在运行阶段的。编译时异常一般发生的概率较高
-
运行时异常可处理也可不处理。运行时异常一般发生的概率较低。
异常处理方式(两种)
-
异常上抛:方法声明位置后面使用Throwable关键字,抛给上一级异常。
-
异常捕捉:try...catch自行捕捉异常
注意:异常一直上抛至main方法。调用者为JVM,此时程序终止,退出JVM.
-
try 结构体中负责发现异常,catch(){}结构体中负责捕捉异常。finally结构体中负责执行必须执行的代码(无论异常是否发生)
关于try...catch...finally
-
finally 语句块中的代码一定会执行
-
可以存在try..finally
-
(java常见面试题)final finally finalize 三者之间的区别:
final :关键字,修饰方法/实例变量/类(final修饰的类无法继承,final修饰的方法无非是覆盖,final修饰的变量无法覆盖)
finally:关键字,和try联合使用
finalize:标识符,是一个方法名。它是Object类中的一个方法。该方法由JVM垃圾回收器GC负责调用。
4.自定义异常类:
-
自定义异常类,继承Exception或者Runtime Exception
-
自定义类中添加两个构造方法:无参构造和有参构造
-
throw和throws二者之间的区别:
throw:手动抛出异常对象,后面跟随的是一个对象名
throws:抛出异常类,用于方法声明位置后,可添加多个,用逗号隔开。表示当前对象无法处理该类异常,上抛。
-
获取异常提示信息:e.getMessage()
打印堆栈异常追踪信息:e.printStackTrace
浙公网安备 33010602011771号