[ http://issues.apache.org/jira/browse/MYFACES-166?page=all ]
     
Martin Marinschek reopened MYFACES-166:
---------------------------------------


Sorry, I closed the wrong one.

> exception handling in myfaces
> -----------------------------
>
>          Key: MYFACES-166
>          URL: http://issues.apache.org/jira/browse/MYFACES-166
>      Project: MyFaces
>         Type: Sub-task
>     Versions: Nightly Build
>     Reporter: Mathias Broekelmann
>     Priority: Trivial
>      Fix For: Nightly Build

>
> Exception handling in myfaces is strange. 
> javax.faces.FacesServlet.logException(...) prints stacktrace through 
> e.printStackTrace() and produces a large stacktrace.
> Calls to log.error(...) followed by a (re)thrown exception which was logged 
> before dosn´t make sense. The decision how and when to log an exception 
> should only be done if the exception can be handled and is not rethrown.
> MethodBindingImpl, PropertyResolverImpl, ValueBindingImpl also prints 
> exception to log and rethrow them.
> I´ve added some patches which will reduce the stacktraces. That will make it 
> easier for the user to find the cause of the exception.
> Index: FacesServlet.java
> ===================================================================
> RCS file: 
> /home/cvspublic/incubator-myfaces/src/jsfapi/javax/faces/webapp/FacesServlet.java,v
> retrieving revision 1.12
> diff -u -r1.12 FacesServlet.java
> --- FacesServlet.java 13 Jul 2004 15:43:34 -0000      1.12
> +++ FacesServlet.java 5 Apr 2005 10:47:15 -0000
> @@ -162,7 +162,6 @@
>          }
>  
>           _servletConfig.getServletContext().log(msg, e);
> -        e.printStackTrace();
>  
>          Throwable cause = e.getCause();
>          if (cause != null && cause != e)
> Index: MethodBindingImpl.java
> ===================================================================
> RCS file: 
> /home/cvspublic/incubator-myfaces/src/myfaces/org/apache/myfaces/el/MethodBindingImpl.java,v
> retrieving revision 1.17
> diff -u -r1.17 MethodBindingImpl.java
> --- MethodBindingImpl.java    13 Oct 2004 11:51:00 -0000      1.17
> +++ MethodBindingImpl.java    5 Apr 2005 10:47:28 -0000
> @@ -159,25 +159,19 @@
>                  }
>                  else
>                  {
> -                    log.error("Exception while invoking expression "
> -                        + getExpressionString(), cause);
> -                    throw new EvaluationException("Expression: "
> +                    throw new EvaluationException("Exception while invoking 
> expression "
>                          + getExpressionString(), cause);
>                  }
>              }
>              else
>              {
> -                log.error("Exception while invoking expression "
> -                    + getExpressionString(), e);
> -                throw new EvaluationException("Expression: "
> +                throw new EvaluationException("Exception while invoking 
> expression "
>                      + getExpressionString(), e);
>              }
>          }
> -        catch (Exception e)
> +        catch (Throwable e)
>          {
> -            log.error("Exception while invoking expression "
> -                + getExpressionString(), e);
> -            throw new EvaluationException("Expression: "
> +            throw new EvaluationException("Exception while invoking 
> expression "
>                  + getExpressionString(), e);
>          }
>      }
> Index: PropertyResolverImpl.java
> ===================================================================
> RCS file: 
> /home/cvspublic/incubator-myfaces/src/myfaces/org/apache/myfaces/el/PropertyResolverImpl.java,v
> retrieving revision 1.31
> diff -u -r1.31 PropertyResolverImpl.java
> --- PropertyResolverImpl.java 9 Jan 2005 18:15:12 -0000       1.31
> +++ PropertyResolverImpl.java 5 Apr 2005 10:47:39 -0000
> @@ -229,9 +229,8 @@
>          }
>          catch (RuntimeException e)
>          {
> -            log.error("Exception setting value of index " + index + " of 
> bean " 
> +            throw new EvaluationException("Exception setting value of index 
> " + index + " of bean " 
>                  + base != null ? base.getClass().getName() : "NULL", e);
> -            throw e;
>          }
>      }
>  
> Index: ValueBindingImpl.java
> ===================================================================
> RCS file: 
> /home/cvspublic/incubator-myfaces/src/myfaces/org/apache/myfaces/el/ValueBindingImpl.java,v
> retrieving revision 1.54
> diff -u -r1.54 ValueBindingImpl.java
> --- ValueBindingImpl.java     13 Oct 2004 11:51:00 -0000      1.54
> +++ ValueBindingImpl.java     5 Apr 2005 10:47:47 -0000
> @@ -353,21 +353,21 @@
>              throw new PropertyNotFoundException(
>                  "Expression: '" + _expressionString + "'", e);
>          }
> -        catch (Exception e)
> +        catch (Throwable e)
>          {
> +            String msg;
>              if (newValue == null)
>              {
> -                log.error("Cannot set value for expression '" 
> -                    + _expressionString + "' to null.", e);
> +                msg = "Cannot set value for expression '" 
> +                    + _expressionString + "' to null.";
>              }
>              else
>              {
> -                log.error("Cannot set value for expression '" 
> +                msg = "Cannot set value for expression '" 
>                      + _expressionString + "' to a new value of type " 
> -                    + newValue.getClass().getName(), e);
> +                    + newValue.getClass().getName();
>              }
> -            throw new EvaluationException(
> -                "Expression: '" + _expressionString + "'", e);
> +            throw new EvaluationException(msg, e);
>          }
>      }
>      
> @@ -452,19 +452,9 @@
>              throw new PropertyNotFoundException(
>                  "Expression: '" + _expressionString + "'", e);
>          }
> -        catch (Exception e)
> +        catch(ELException e)
>          {
> -            log.error("Cannot get value for expression '" + 
> _expressionString 
> -                + "'", e);
> -
> -            if (e instanceof ELException)
> -            {
> -                log.error("Root cause for exception : ", 
> -                    ((ELException) e).getRootCause());
> -            }
> -
> -            throw new EvaluationException(
> -                "Expression: '" + _expressionString + "'", e);
> +          throw new EvaluationException(e.getRootCause());
>          }
>      }
>      

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to