1 Reply Latest reply on May 14, 2008 12:15 PM by Pete Muir

    Where am I wrong in doing exception handling ?

    Adrien FERIAL Newbie

      I really have trouble in exception handling! Please tell me what I did wrong :

      1 - I set facelets development to false in web.xml

      2 - I turned off the debug mode in components.xml

      3 - I modified the pages.xml such as any exception must display a standard error page :

           <redirect view-id="/error/error.xhtml">

      My CustomException class :

      @Redirect(viewId = "/error/customException.xhtml", message = "Not a valid DicomDir")
      @ApplicationException(rollback = true)
      public class CustomException extends RuntimeException {}

      What I expect is if my application code launch an exception then the /error/customException.xhtml view will be displayed. Otherwise, any exception will lead to the standard error page.

      But it doesn't work! All I get is the exception stack in the log and my long-running conversation ends.

      My exception doesn't seem to be caught by the Seam exception handler. In the logs, it looks like the exception is caught somewhere and wrapped into a WARN debug :

      09:29:40,763 WARN  [lifecycle] executePhase(APPLY_REQUEST_VALUES 2,com.sun.faces.context.FacesContextImpl@4d79d5) threw exception
      javax.faces.FacesException: /importData/uploadDicomDir.xhtml @24,43 fileUploadListener="#{dicomReader.listener}": x.y.z.CustomException : bla bla bla.
           at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:109)
      09:29:41,373 INFO  [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
      sourceId=null[severity=(INFO 0), summary=(Not a valid DicomDir), detail=(Not a valid DicomDir)]

      Please help me I'm stuck!