I have another problem with handling exceptions in jsf / richfaces.
I have wrapper for FacesServlet to handling exceptions, but it catch only some exceptions, why ??
For example java.net.SocketException (connection to db) haven't be caught.
Another problem is that FacesContext context = FacesContext.getCurrentInstance(); return null in catch...
Is a way to get context and add Faces Message... ?
package test; import java.io.IOException; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.webapp.FacesServlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; /** * Wrapper * * @author marioosh * */ public class FacesServletWrapper extends HttpServlet { private Logger log = Logger.getLogger(getClass()); private FacesServlet facesServlet; public void init(ServletConfig servletConfig) throws ServletException { log.debug("INIT"); facesServlet = new FacesServlet(); facesServlet.init(servletConfig); System.getProperties().put("org.apache.el.parser.COERCE_TO_ZERO", "false"); } public void destroy() { facesServlet.destroy(); } public ServletConfig getServletConfig() { return facesServlet.getServletConfig(); } public String getServletInfo() { return facesServlet.getServletInfo(); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { try { facesServlet.service(request, response); } catch (Throwable e) { log.debug("FacesServletWrapper - error captured!"); FacesContext context = FacesContext.getCurrentInstance(); /// <---- null :(( context.addMessage(FacesMessage.FACES_MESSAGES, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.toString())); } } }