一、Java 异常体系

Throwable 三层继承树
Throwable
Error(不该 catch 的系统级错误:StackOverflowError 栈溢出/OutofMemoryError OOM 堆溢出)
Exception(应用层异常,才需要 try/catch)
Checked Exception(受检异常,编译器必须 try/catch 或 throws:IOException/SQLException/ClassNotFoundException)
RuntimeException(未受检异常,编译不强制:NullPointerException/ArrayIndexOutofBoundException)
(二)throw vs throws
throw:方法内部写,手动抛出异常对象throw new IllegalArgumentException("id must >0");
throws:方法签名后面写,告诉调用者“我可能抛这些异常,你要处理”public void read() throws IOException,ClassNotFoundException
