Java 中所有异常都是 Throwable 的子类,他的直接子类有两个,一个是 Error, 一个是 Exception。
Error 一般表示 JVM 出现了严重问题,比如栈溢出或内存溢出。
Exception 中异常分为两类:一类是 RuntimeException ,也就是运行时异常,表示运行期间出现的错误,比如空指针和数组下标越界,出现这种异常一般是程序出现了逻辑错误,也就是代码有 Bug。另一类是编译时异常(除了 RuntimeException 以外的异常),常见的一般有 IO Exception 等。
try catch finally 语句块执行细节
- finally 语句必须在 try 语句块执行的情况下才会执行。
- 不管有没有异常发生,finally 语句中的代码都会执行;
- finally 语句如果有 return,方法最终返回的是 finally 语句 return 的数据。
- finally 语句没有 return 但是修改了要返回的数据,假如该数据是基本类型,则 finally 语句的修改不会对方法的返回结果造成影响,假如该数据是引用类型,则方法的返回结果就是 finally 语句修改后的结果。