何为异常链?
我们常常会想:要在捕获一个异常后抛出另一个异常,并且希望把原始的异常信息保存下来,这被称之为异常链。
有什么方式呢?
在JDK1.4以前,作为一个程序员,我们必须要自己编写代码来保存原始的异常信息。
现在,所有Throwable的子类在构造器中都可以接受一个cause(因由)对象作为参数。
此cause用来表示原始异常,这样通过将原始异常传递给新的异常,即使当前位置创建并抛出了新的异常,也能通过这个异常链追踪到异常最初发生的地方。
下面用代码来为大家演示:
//异常链
class DynamicFieldException extends Exception{}
public class DynamicFields {
private Object[][] fields;
public DynamicFields(int initialSize) {
fields = new Object[initialSize][2];
for(int i=0;i<initialSize;i++)
fields[i] = new Object[] {null,null};
}
public String toString() {
StringBuilder result = new StringBuilder();
for(Object[] obj:fields) {
result.append(obj[0]);
result.append(": ");
result.append(obj[1]);
result.append("\n");
}
return result.toString();
}
privat