packagejava.lang;importjava.io.*;/****Throwable是所有Error和Exceptiong的父类*注意它有四个构造函数:*Throwable()*Throwable(Stringmessage)*Throwable(Throwablecause)*Throwable(Stringmessage,Throwablecause)**/publicclassThrowableimplementsSerializable{privatestaticfinallongserialVersionUID=-3042686055658047285L;/***Nativecodesavessomeindicationofthestackbacktraceinthisslot.*/privatetransientObjectbacktrace;/***描述此异常的信息*/privateStringdetailMessage;/***表示当前异常由那个Throwable引起*如果为null表示此异常不是由其他Throwable引起的*如果此对象与自己相同,表明此异常的起因对象还没有被初始化*/privateThrowablecause=this;/***描述异常轨迹的数组*/privateStackTraceElement[]stackTrace;/***构造函数,起因对象没有被初始化可以在以后使用initCause进行初始化*fillInStackTrace可以用来初始化它的异常轨迹的数组*/publicThrowable(){fillInStackTrace();}/***构造函数*/publicThrowable(Stringmessage){//填充异常轨迹数组fillInStackTrace();//初始化异常描述信息detailMessage=message;}/***构造函数,cause表示起因对象*/publicThrowable(Stringmessage,Throwablecause){fillInStackTrace();detailMessage=message;this.cause=cause;}/***构造函数*/publicThrowable(Throwablecause){fillInStackTrace();detailMessage=(cause==null?null:cause.toString());this.cause=cause;}/***获取详细信息*/publicStringgetMessage(){returndetailMessage;}/***获取详细信息*/publicStringgetLocalizedMessage(){returngetMessage();}/***获取起因对象*/publicThrowablegetCause(){return(cause==this?null:cause);}/***初始化起因对象,这个方法只能在未被初始化的情况下调用一次*/publicsynchronizedThrowableinitCause(Throwablecause){//如果不是未初始化状态则抛出异常if(this.cause!=this)thrownewIllegalStateException("Can'toverwritecause");//要设置的起因对象与自身相等则抛出异常if(cause==this)thrownewIllegalArgumentException("Self-causationnotpermitted");//设置起因对象this.cause=cause;//返回设置的起因的对象returnthis;}/***字符串表示形式*/publicStringtoString(){Strings=getClass().getName();Stringmessage=getLocalizedMessage();return(message!=null)?(s+":"+message):s;}/***...