Good point... thanks.... but is the goal of struts only to be used in app servers that support the J2EE 1.3 SDK?
check this out http://java.sun.com/j2ee/sdk_1.2.1/techdocs/api/javax/servlet/jsp/JspExcepti on.html The older version of JspException did not support nested exceptions.... If struts is already dependent on J2EE SDK 1.3 then I agree with your statement. If we endeavor to make it compatible with older versions of the SDK, then we should create our own wrapper. What version of the SDK is Websphere, WebLogic, Orion, Resin, JRun, etc. on....? Thoughts? Rick Hightower Director of Development eBlox, Inc. Check out our new website! www.eblox.com Contact Info: eBlox Tucson phone: 520-615-9345 x103 fax: 520-529-5774 Rick's stuff: http://www.eblox.com/people_detail.php?id=52 http://www.geocities.com/rick_m_hightower/ http://www.brainbench.com/transcript.jsp?pid=2351036 -----Original Message----- From: Tom Klaasen (TeleRelay) [mailto:[EMAIL PROTECTED]] Sent: Friday, November 16, 2001 1:49 AM To: Struts Developers List Subject: RE: Exception handling --- suggestion for improvements ---- (e.g., template tag masks original exception) correction in sample code Maybe I'll have to disappoint you about constructing a new Exception class. Did you have a look at http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/jsp/JspExcep tion.html#JspException(java.lang.String,%20java.lang.Throwable) ? Looks to me this does _exactly_ what you're trying to do. However, I agree that Struts should not call new JspException(e.getMessage()), but new JspException("Some intelligent message", e); instead. This leaves the decision of what to display to the programmer. tomK > -----Original Message----- > From: Rick Hightower [mailto:[EMAIL PROTECTED]] > Sent: vrijdag 16 november 2001 9:24 > To: Struts Developers List > Subject: Exception handling --- suggestion for improvements > ---- (e.g., template tag masks original exception) correction > in sample code > > > > We have been using struts for a good while. We really dig the > framework, > but... > > Often times the struts tags catch the original exception (e.g., > ClassCastException), and then throw a JspException; thus, losing the > original stack trace. This hides\masks the original > exception. Hiding the > orginal stack trace makes it harder to debug the problem. > > I wrote a JSPWrapperException that preserves the orginal > stack trace for > debugging. > JSPWrapperException extends JspWrapper; however, like > ServletException, it > captures the original stack trace and displays it for > debugging, i.e., the > JSPWrapperException prints out the original stack trace of > the original > exception. This is a real boon for debugging. > > I modified 50 or so files in our copy of the struts code base (a 1.0 > derivative with some bug fixes and extra error handing) to use the > JSPWrapperException instead of the JspException. > > It cost about an hour to make the changes, but I feel it will > save us hours > of debugging in the future. > > There is an ant build file with struts so making the changes > and creating > struts.jar was easy. > > > > I search the struts code base for code like this.... (example code) > > try{ > } > catch(XYZException e){ > throw new JspException(e.getMessage()); > } > > to code that looks like this > try{ > } > catch(XYZException e){ > throw new JspWrapperException(e, e.getMessage()); > } > > > BTW Here is the code for JspWrapperException.... > > Enjoy..... > > /* > * JspWrapperException.java > * > * Created on November 15, 2001, 11:14 PM > */ > > package org.apache.struts.util; > import javax.servlet.jsp.JspException; > > /** > * > * @author rick > */ > public class JspWrapperException extends JspException { > > Exception e; > > /** > * @param Exception e > * @param String message > */ > public JspWrapperException(Exception e, String message) { > super(message); > this.e = e; > } > > /** > */ > public void printStackTrace () { > super.printStackTrace(); > String sep = System.getProperty("line.separator", "\r\n"); > if (e != null) { > System.err.println("--------------- extended Exception > nest ----------- "); > e.printStackTrace(); > } > } > > /** > * @param ps > */ > public void printStackTrace (java.io.PrintStream ps) { > super.printStackTrace(ps); > String sep = System.getProperty("line.separator", "\r\n"); > if (e != null) { > ps.println("--------------- extended Exception > nest ----------- > "); > e.printStackTrace(ps); > } > } > > /** > * @param pw > */ > public void printStackTrace (java.io.PrintWriter pw) { > super.printStackTrace(pw); > String sep = System.getProperty("line.separator", "\r\n"); > // > //Nested exception > if (e != null) { > pw.println("--------------- extended Exception > nest ----------- > "); > e.printStackTrace(pw); > } > } > > /** > * @return > */ > public String getMessage () { > StringBuffer message = new StringBuffer(150); > message.append(super.getMessage()); > > // > //add Line separator > String sep = System.getProperty("line.separator", "\r\n"); > message.append(sep); > > // > //Add the nested exception > if (e != null) { > message.append(e.getMessage()); > //char = props["line.separator"] > } > return message.toString(); > } > } > > > > Rick Hightower > Director of Development > eBlox, Inc. > > Check out our new website! > www.eblox.com > > Contact Info: > eBlox Tucson > phone: 520-615-9345 x103 > fax: 520-529-5774 > > Rick's stuff: > http://www.eblox.com/people_detail.php?id=52 > http://www.geocities.com/rick_m_hightower/ > http://www.brainbench.com/transcript.jsp?pid=2351036 > > > -- > To unsubscribe, e-mail: > <mailto:struts-dev-> [EMAIL PROTECTED]> > For > additional commands, > e-mail: <mailto:[EMAIL PROTECTED]> > > > > -- > To unsubscribe, e-mail: > <mailto:struts-dev-> [EMAIL PROTECTED]> > For > additional commands, > e-mail: <mailto:[EMAIL PROTECTED]> > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>