1. 异常的体系结构
Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception。
Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError。
Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。平时所说的异常就是Exception。
异常的分类:
编译时异常:在程序编译期间发生的异常,称为编译时异常,也称为受检查异常(Checked Exception)。
运行时异常:指的是程序已经编译通过得到class 文件了, 再由 JVM 执行过程中发生的异常,称为运行时异常,也称为非受检查异常(Unchecked Exception)。RunTimeException以及其子类对应的异常,都称为运行时异常。比如:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException。
异常的处理:
防御式编程:LBYL: Look Before You Leap. 在操作之前就做充分的检查. 即:事前防御型。
EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获取原谅比事前获取许可更容易”. 也就是先操作, 遇到问题再处理. 即:事后认错型。
异常处理主要的5个关键字:throw、try、catch、finally、throws。
异常的抛出throw:
抛出一个指定的异常对象,将错误信息告知给调用者。throw必须写在方