在java中,异常分为免检异常和必检异常
必检异常就是编译时被强制检查的异常
异常链:通常在捕获一个异常后抛出另一个异常,并希望把原始的异常信息保存下来,这被称为异常链
在java中,Throwable的子类在构造器中可以接受一个cause(因由)作为参数,这个cause即为原始异常。
而在Throwable的子类中,只有三种基本的异常类提供了带cause参数的构造器,即Error,Exception,RunTimeException;
但如果要把其他异常链接起来,应该使用InitCause()方法而不是构造器。
派生类构造器不能捕获基类构造器抛出的异常
对于在构造阶段可能会抛出异常,并且要求清理的类,最安全的方法是使用嵌套的try子句
这种通用的清理惯用法在构造器不抛出任何异常时也应该运用,其基本规则是:在创建一个需要清理的对象之后,立即进入一个try-finally语句块
反射和泛型就是用来补偿静态类型检查所带来的过多限制
网友评论