日期:2014-05-20  浏览次数:20778 次

EXCEPTION问题
package   com.jivesoftware.forum;  

import   java.io.PrintStream;  
import   java.io.PrintWriter;  

/**  
*   Thrown   if   a   User   does   not   have   permission   to   access   a   particular   method.  
*  
*   @author   yangyong  
*  
*/  
public   class   UnauthorizedException   extends   Exception   {  

private   Throwable   nestedThrowable   =   null;  

public   UnauthorizedException()   {  
super();  
//   TODO   Auto-generated   constructor   stub  
}  

public   UnauthorizedException(String   message)   {  
super(message);  
//   TODO   Auto-generated   constructor   stub  
}  

public   UnauthorizedException(Throwable   nestedThrowable)   {  
this.nestedThrowable=nestedThrowable;  
}  

public   UnauthorizedException(String   msg,   Throwable   nestedThrowable)   {  
super(msg);  
this.nestedThrowable=nestedThrowable;  
}  

public   void   printStackTrace(){  
super.printStackTrace();  
if(nestedThrowable!=null){  
nestedThrowable.printStackTrace();  
}  
}  

public   void   printStackTrace(PrintStream   ps){  
super.printStackTrace(ps);  
if(nestedThrowable!=null){  
nestedThrowable.printStackTrace(ps);  
}  
}  

public   void   printStackTrace(PrintWriter   pw){  
super.printStackTrace(pw);  
if(nestedThrowable!=null){  
nestedThrowable.printStackTrace(pw);  
}  
}  
}  
今天看了一下这个自定义的类,为什么要先用super.printStackTrace(pw);后用  
if(nestedThrowable!=null){  
nestedThrowable.printStackTrace(pw);  
}?   不是只用一条nestedThrowable.printStackTrace(pw);不就行了吗,   这是为什么呢  


------解决方案--------------------
super.printStackTrace(pw);
========================================
让你显示的调用一下基类的这个有参函数。因为你的方法要重写super的这个方法,而这个方法是基于原来的基础上增加功能,这样,用一下super.printStackTrace(pw);直接在将你的新增加的功能放进去就行了。