Подтвердить что ты не робот

Предпочтительный способ обработки исключений Java в ServletContextListener

Что касается жизненного цикла сервлета, что вы, ребята, рекомендуете делать в ответ на исключение...

Например,

public class Foo implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        try {
           // something nasty
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        try {
           // something nasty
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

Я не совсем уверен, что будет обрабатывать исключение во время выполнения выше. Я работаю над идеей, что если исключения здесь брошены, они достаточно серьезны, чтобы полностью разрушить систему, поэтому исключение (необработанное) может быть нормально.

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

4b9b3361

Ответ 1

Когда вы поймаете исключение, вы можете захотеть установить атрибут ServletContext, чтобы указать, что ошибка была обнаружена. Таким образом, если контейнер не отключил приложение, вы можете Filter и/или Servlet проверить атрибут ServletContext и предпринять соответствующие действия, например, отобразить страницу с ошибкой.

Ответ 2

Кажется, что ServletContentListener не предназначен для осуществления контроля над жизненным циклом (в противном случае ему будет разрешено использовать ServletException).

Таким образом, я бы не полагался на исключение RuntimeException, чтобы делать что-нибудь полезное. Рассматривая некоторые другие темы здесь, он, кажется, регистрируется и игнорируется на определенных серверах приложений.

Если критически важно, чтобы приложение не запускалось при сбое кода, вы должны переместить этот код в секцию инициализации сервлета.

Ответ 3

Хороший тон показывает некоторую страницу, например "Техническая ошибка, извините" и не показывать стеке с сообщением об ошибке. Просто зарегистрируйте его и перейдите на страницу с ошибкой.

Ответ 4

Мы можем исключение через object.printStackTrace(); или вызов Exception через out.print( "Exception is" + ex);