NullPointException
ClassCastException(类转换异常)
illegalArgumentException
NumberFormatException(数字格式化异常)
所有Exception的直接子类都称为编译时异常。编译时异常因它必须在编译阶段进行处理而得名,若不处理,则编译器报错。但它发生在运行阶段,所有的异常实质上都是new了一个异常对象,所以所有的一场都是发生在运行阶段的。编译时异常一般发生的概率较高
运行时异常可处理也可不处理。运行时异常一般发生的概率较低。
异常上抛:方法声明位置后面使用Throwable关键字,抛给上一级异常。
异常捕捉:try...catch自行捕捉异常
注意:异常一直上抛至main方法。调用者为JVM,此时程序终止,退出JVM.
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
原文:https://www.cnblogs.com/a-n-yan/p/14609077.html