Как отобразить удобную для пользователя страницу ошибки в браузере, когда сервлет генерирует исключение во время выполнения?

Разрабатываю веб-приложение на JSF. Я тестировал его так, как мог, но время от времени возникают исключения во время выполнения.

Итак, как перенаправить пользователя на специальную страницу ошибки каждый раз, когда генерируется исключение (вместо отображения 500 Error с полными журналами tomcat)?


person Roman    schedule 30.04.2010    source источник


Ответы (2)


Просто объявите <error-page> в web.xml, где вы можете указать страницу, которая должна отображаться на определенном _ 3_ (или любой из его подклассов) или Код статуса HTTP. Например.

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

который будет отображать страницу ошибки в любом подклассе java.lang.Exception, но не java.lang.Throwable или java.lang.Error. Таким образом, у вас может быть собственная страница ошибок для любого типа Throwable. Например. java.sql.SQLException, java.io.IOException и так далее.

Or,

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

который будет отображать страницу ошибки при ошибке HTTP 500, но вы также можете указать другие для 404 (Страница не найдена), 403 (Запрещено) и т. д.

Если вы объявите <%@page isErrorPage="true" %> в начале error.jsp, тогда у вас будет доступ к брошенному _ 14_ (а значит, и все его получатели) на ${exception} в EL.

<p>Message: ${exception.message}</p>

Также см. руководство по Java EE 5 по этой теме.

person BalusC    schedule 30.04.2010
comment
Что, если у меня есть сервлет, а не jsp? Есть ли аналог для isErrorPage="true"? - person broc.seib; 26.04.2013
comment
Эквивалент для не-JSP - request.getAttribute(RequestDispatcher.ERROR_EXCEPTION). - person Jesse Glick; 30.04.2013

В вашем web.xml:

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

Вы также можете перехватить определенные исключения или исключения, которые расширяют Throwable:

<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/errorpages/500.jsp</location>
</error-page>
person Pascal Thivent    schedule 30.04.2010