Непроверенное исключение, которое не перехватывается страницей ошибок Web.xml - PullRequest
0 голосов
/ 10 июля 2011

У меня есть непроверенное исключение, которое не обрабатывается указанной страницей ошибок web.xml. Моя папка настроена следующим образом:

/ index.jsp

/ error.jsp

/ WEB-INF / web.xml

/ другие страницы и каталоги здесь

В web.xml указано следующее:

    <error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/error.jsp</location>
    </error-page>

    <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
    </error-page>

Однако, когда я намеренно выбрасываю исключение IllegalArgumentException в свой сервлет входа в систему при создании плохого объекта, приложение просто ест ошибку и записывает ее в журнал Tomcat 6.0. Страница не перенаправляется на страницу error.jsp.

Что я делаю не так? Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Ниже приведена информация об ошибке из журнала Tomcat 6.0:

SEVERE: Servlet.service () для сервлета AccountSignIn бросил исключение java.lang.IllegalArgumentException: недопустимый идентификатор int в FindMeInfo.getInstance (), id: -1 на com.blank.groupandpal.FindMeInfo.getInstance (FindMeInfo.java:15) на com.blank.accounts.servs.AccountSignInServlet.processRequest (AccountSignInServlet.java:107) на com.blank.accounts.servs.AccountSignInServlet.doPost (AccountSignInServlet.java:164) на javax.servlet.http.HttpServlet.service (HttpServlet.java:637) на javax.servlet.http.HttpServlet.service (HttpServlet.java:717) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на com.blank.filters.SessionAuthFilter.doFilter (SessionAuthFilter.java:79) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на com.blank.filters.IPControlFilter.doFilter (IPControlFilter.java:97) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:433) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) в ch.qos.logback.access.tomcat.LogbackValve.invoke (LogbackValve.java:158) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:293) в org.apache.coyote.http11.Http11AprProcessor.process (Http11AprProcessor.java:859) в org.apache.coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process (Http11AprProtocol.java:574) в org.apache.tomcat.util.net.AprEndpoint $ Worker.run (AprEndpoint.java:1527) at java.lang.Thread.run (Thread.java:595)

Спасибо.

1 Ответ

2 голосов
/ 13 июля 2011

Кажется, я помню, что механизм страниц с ошибками отключен во время вызова метода doFilter фильтра.Вы можете рассмотреть возможность использования самого внешнего фильтра в качестве собственного обработчика страницы ошибки.

Дополнительная информация, основанная на комментарии:
Механизм страницы ошибки отключен для запроса, поскольку он обрабатывается одним или несколькимифильтры (например, IPControlFilter и SessionAuthFilter).Это не имеет ничего общего с применением фильтра к вашей странице ошибок.«Самый внешний фильтр», о котором я упоминал, будет отображаться на /* и будет просто делать что-то вроде:

try {
    chain.doFilter(request, response);
} catch (Throwable exc) {
    // set request attributes to capture error info and then forward to error page (e.g. /error.jsp)
}

Другими словами, этот фильтр по сути является воссозданием механизма страницы ошибок ...

...