异常体系

java.lang包有一个Throwable类。继承这个类的有Error和Exception
Error描述一些严重错误,比如JVM挂了。这类东西是我们在编码阶段不关心的。
Exception分为运行时异常和checked Exception(检测性异常)。检测性异常指的是可以在编译阶段被编译器检测出来的异常。
对于检测性异常,你必须显式处理。对于运行时异常,你可以不做显式处理。

异常捕获

try {

} catch(... e) {

} finally {
    //是否发生异常都会执行。即使在try或catch里return或者再次发生未捕获的异常也会执行finally。
}

catch可以有多个,所以不要把Exception放在上面,这样就不会往下走了。
异常捕获和不捕获的区别就是能否继续向下执行。

异常抛出

在方法里可以抛出异常,方法就是在方法名后面写throws。
抛出异常的位置之后的代码不会再执行了。
在main方法里也可以throws,那样就需要JVM去处理了,不建议这样做。建议在main里解决所有问题。

子类重写方法,抛出的异常需要小于等于父类方法。

自定义异常

· 继承Exception类或其子类
· 提供无参构造和有参构造(接受一个字符串)
· 提供一个序列化版本号