私は独自の例外クラスを作成し、アクション クラスでこの例外をスローしました。フィルターがあり、フィルターから渡された後にアクションによって要求が処理されます。アクション クラスが独自の例外をスローした場合、フィルターでキャッチされません。なぜこれが起こるのか教えてください。
これが私のフィルターです
public class myfilter implements Filter
{
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException, ServletException
{
try
{
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
RequestDispatcher rd = req.getRequestDispatcher("/"+url);
if(rd != null)
{
rd.forward(request,response);
}
}
catch(MyException ex)
{
System.out.println("filter caught exp--"+ex.getMessage());
ex.printStackTrace();
throw new ServletException(ex.getMessage());
}
}
public void init(FilterConfig filterConfig)
{
}
public void destroy()
{
System.out.println("--filter destroy--");
}
}
私の構造体アクションクラスはこちら
public class eventaction extends Action
{
public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws MyException
{
response.setContentType("text/html; charset=UTF-8");
/*
Statements
*/
throw new MyException("exception");
}
}
いくつかのトレースで記録された次の行
[14:50:22:480]|[07-04-2013]|[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/].[action]]|[SEVERE]|[12]|: Servlet.service() for servlet action threw exception|MyException: Unable_to_add_event
MyException ではなくフィルターで一般的な例外をキャッチした場合、フィルターによってキャッチされます。なんで?
catch(Exception ex) //catch(MyException ex)
{
System.out.println("filter caught exp--"+ex.getMessage());
ex.printStackTrace();
throw new ServletException(ex.getMessage());
}