* 识别异常的方法:
1. 重写异常的super(String)方法,将异常信息传入异常对象,然后使用getMessage()方法调出;
2. 设置id,通过id判断异常;
3. 选择合适的异常名称,直观的判断;
* 在定义抽象基类和接口时,声明方法将抛出异常,派生类或接口实现就能抛出这些预先声明的异常;
StackTrace:
* StackTraceElement
* StackTraceElement getStackTrace();
* getMethodName();
重新抛出异常:
* 被重新抛出的异常对象通过printStackTrace()方法显示的是原来异常抛出点的栈信息;
* fillInStackTrace()将会刷新被重新抛出的异常对象的栈信息,即将当前的调用栈信息填入原来的栈;
异常链:
* 在catch某个异常A的对象之后,重新抛出一个其他类型的异常B的对象,并且想要通过异常B保存异常A的信息;
* 建立异常链的两个方法:
1. 异常类B定义时,重写形参为Throwable的构造器,然后直接调用;throw new B(a);
2. 使用initCause(),将A导入B中;B b=new B(); b.initCause(a); throw b;
RuntimeException:
* 如果RuntimeException没有被捕获而直达main(),那么在程序退出前将调用异常的printStackTrace()方法;
* RuntimeException代表的都是编程错误: