tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From craig...@locus.apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/core Handler.java
Date Fri, 10 Nov 2000 02:06:32 GMT
craigmcc    00/11/09 18:06:32

  Modified:    src/share/org/apache/tomcat/core Tag: tomcat_32 Handler.java
  Log:
  Restore the previous exception propogation model so that exceptions are
  propogated only from included servlets.  This undoes part of a change
  Larry committed earlier -- after further discussion with him, we've agreed
  that this is the correct behavior so that servlets can trap exceptions
  thrown by included servlets without corrupting the content of the
  response.
  
  NOTE:  If you include a JSP page that declares an error page, and your JSP
  page throws an exception, the transfer to the error page will still happen
  as expected even in an included page.  This is handled completely within
  the JSP environment, and did not rely on the error propogation mechanism
  for servlet exceptions -- which was Larry's primary concern.
  
  As a result of this change, Tomcat 3.2 will trigger the <error-page>
  handling only if the top-level servlet throws an exception.  This is also
  consistent with the behavior of Tomcat 4.0 in this respect.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.7.2.6   +27 -21    jakarta-tomcat/src/share/org/apache/tomcat/core/Handler.java
  
  Index: Handler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Handler.java,v
  retrieving revision 1.7.2.5
  retrieving revision 1.7.2.6
  diff -u -r1.7.2.5 -r1.7.2.6
  --- Handler.java	2000/11/09 14:11:27	1.7.2.5
  +++ Handler.java	2000/11/10 02:06:32	1.7.2.6
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Handler.java,v 1.7.2.5
2000/11/09 14:11:27 larryi Exp $
  - * $Revision: 1.7.2.5 $
  - * $Date: 2000/11/09 14:11:27 $
  + * $Header: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Handler.java,v 1.7.2.6
2000/11/10 02:06:32 craigmcc Exp $
  + * $Revision: 1.7.2.6 $
  + * $Date: 2000/11/10 02:06:32 $
    *
    * ====================================================================
    *
  @@ -258,16 +258,19 @@
   		    contextM.handleStatus( req, res, 404);
   		    return;
   		}
  -		// handle error, does nothing if already handled
  -		contextM.handleError( req, res, ex);
  -		// rethrow the exception
   		context.log("Exception in init  " + ex.getMessage(), ex );
  -		if (ex instanceof IOException)
  -		    throw (IOException) ex;
  -		else if (ex instanceof ServletException)
  -		    throw (ServletException) ex;
  -		else
  -		    throw new ServletException("Servlet Init Exception", ex);
  +                if (res.isIncluded()) { // Only propogate on includes
  +                    if (ex instanceof IOException)
  +                        throw (IOException) ex;
  +                    else if (ex instanceof ServletException)
  +                        throw (ServletException) ex;
  +                    else
  +                        throw new ServletException
  +                            ("Servlet Init Exception", ex);
  +                } else {                // Only handle on top level
  +                    contextM.handleError( req, res, ex );
  +                    return;
  +                }
   	    }
   	}
          }
  @@ -289,17 +292,20 @@
   
   	if( t==null ) return;
   
  -	// handle error, does nothing if already handled
  +        // Rethrow the exception if we are inside an include
  +        if (res.isIncluded()) {
  +            //            context.log("Rethrowing doService exception: " + t);
  +            if (t instanceof IOException)
  +                throw (IOException) t;
  +            else if (t instanceof ServletException)
  +                throw (ServletException) t;
  +            else
  +                throw new ServletException("Servlet Exception", t);
  +        }
  +
  +	// handle error, does nothing if already handled, at top level
   	contextM.handleError( req, res, t );
   
  -	// rethrow the exception
  -	context.log("Rethrowing doService exception: " + t);
  -	if (t instanceof IOException)
  -	    throw (IOException) t;
  -	else if (t instanceof ServletException)
  -	    throw (ServletException) t;
  -	else
  -	    throw new ServletException("Servlet Exception", t);
       }
   
   //     protected void handleError( Request req, Response res, Throwable t) {
  
  
  

Mime
View raw message