OK, my mistake, this seems to be valid only for servlet 2.3 spec, not 2.2. Servlet 2.2 has no such feature whatsoever.
For my defense, I can say that Sun should use the @since tag more often ;) tomK > -----Original Message----- > From: Tom Klaasen (TeleRelay) > Sent: vrijdag 16 november 2001 9:49 > 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/js > p/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: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]>