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 :
<exception> <redirect view-id="/error/error.xhtml"> <message>#{org.jboss.seam.handledException.message}</message> </redirect> </exception>
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!
Thanks!
Adrien
Seam can't handle exceptions thrown in the restore view phase.