Java 编程思想---异常处理

1 把当前异常对象重新抛出,那么printStackTrace()只是记录上次异常抛出点的调用栈信息,而非重复异常抛出点的信息;

   要想更新这个信息,可以调用fillInStackTrace(),即throw (Exception)e.fillInStackTrace();这将返回一个Throwable对象,它是通过把当前调用栈信息填入到原来那个异常对象而建立的。

2 如果再次抛出另外一个新的异常,得到的结果类似于fillInStackTrace(),原来抛出点的异常信息全部丢失,显示的是新抛出异常的堆栈信息。


3 异常链可以追溯异常发生的真正位置,cause

4 只有三种类带了Cause参数的构造函数,分别是Error Exception 和 RuntimeException,自定义的异常类,需要调用其initCause(Throwable e)函数来链接其他类型的异常类。


5 异常丢失,当某些特殊的使用fiinally子句,会导致异常丢失


6.子类构构造器的异常说明必须包含父类的异常说明,但是子类构造器不能捕获父类构造器的异常;子类构造器还能抛出其他异常;

7.子类覆盖父类的普通方法,是不能随便添加异常的‘;

8.如果子类继承的接口和子类继承的父类普通方法抛出不一样的异常,那么子类不能抛出任何异常。

9 子类普通方法可以不抛出任何异常

10 子类继承的抽象方法也可以不抛出任何异常,即使父类抽象方法里声明了要抛出异常;

11 不能基于异常说明来重载方法。


12 一个对象没有初始化成功,是不需要清理的,否则一定要清理


13 异常遵循就近匹配原则,

14 捕获该异常类 和从该异常类派生出来的子类

15 因此要先捕获子类,再捕获基类(其实也不会执行),反着来,就会编译报错


   

  

猜你喜欢

转载自blog.csdn.net/xuxinyl/article/details/78318678