Servlet/filter specific exception handling in java

◇◆丶佛笑我妖孽 提交于 2019-12-23 10:48:06

问题


I have a servlet extending HttpServlet and implementing a GET request. I also use a filter (from an external library) which is mapped to the above servlet url. Now an exception is thrown by the filter, and as expected I get this

SEVERE: Servlet.service() for servlet [myServlet] in context with path [] threw exception

I know error-page description is probably a standard way to catch this exception, but is there a way to catch the exception from a specific servlet filter ? I already have an error-page description and redirecting to a simple html page. I also don't want to redirect to a jsp page or so, and play around with error parameters. In short, my questions are :

  • Is there a simpler, elegant way to catch an exception for a specific servlet and handle them ? The error-page descriptor doesn't seem to have any fields to choose the servlet which throws an exception.
  • Is it possible to catch an exception occuring inside a specific filter and handle them, given that the exception thrown by the filter is not a custom exception ?

回答1:


Can you not extend the Filter and handle the exception thrown by super?

public class MyFilter extends CustomFilter{

        private static final Map<String, String> exceptionMap = new HashMap<>();

        public void init(FilterConfig config) throws ServletException {
              super.init(config);
              exceptionMap.put("/requestURL", "/redirectURL");
              exceptionMap.put("/someOtherrequestURL", "/someOtherredirectURL");
        }
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
           try{
                   super.doFilter(request, response, chain);
              }catch(Exception e)
                    //log
                    String errURL = exceptionMap.get(request.getRequestURI());
                    if(errURL != null){
                        response.sendRedirect(errURL);
                    }
              }
       }
}


来源:https://stackoverflow.com/questions/29914717/servlet-filter-specific-exception-handling-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!