У меня есть веб-приложение Java среднего размера, использующее Log4J как фреймворк. Прямо сейчас я просматриваю обработку Exception и Logging, чтобы сделать приложение более надежным. Он работает на Tomcat 6, с пружиной, спящим и Struts2 в качестве рамок.Ловить и регистрировать все необработанные исключения с помощью Log4J
Что бы я хотел сделать, это зарегистрировать исключение EVERY UNHANDLED, которое происходит в приложении. Чтобы я мог их зарегистрировать, сделайте log4j отправьте мне электронное письмо, а затем посмотрите, где я не вижу блоки try-catch. И, наконец, измените мой код соответственно.
Причина: сейчас все необработанные исключения печатаются непосредственно на экране, и мои пользователи обычно не удосуживаются копировать мне исключения.
Я знаю, что могу читать tomcat-журналы, но я бы хотел, чтобы они обрабатывались log4j, чтобы я мог получать электронное письмо на каждое такое исключение.
Любые предложения?
Вы должны стремиться к исключению исключений HANDLING в любом месте, кроме одного места в вашем коде, - так называемого барьера исключения. Это очень доступно для веб-приложения. Вам необходимо связать каждый вызов с кодом контроллера с помощью try-catch. То же самое касается обработки транзакций в спящем режиме. –
Ну, есть исключения (каламбур) для вышеуказанного правила, где вы можете захотеть поймать определенные исключения как часть логики приложения.Простым примером может быть преобразование текстового ввода в число, где вы не хотите, чтобы ваше приложение вышло из строя из-за неправильного ввода. Однако я искренне согласен с барьером исключения для необработанных исключений. – erikxiv
@MarkoTopolnik Не нужно обматывать каждый вызов контроллера в try-catch, когда есть декларативные средства для исключения исключений как в спецификации Servlet, так и в Struts2 (может быть, даже Spring, не знаю). Также вы получаете одно место для обработки исключений, но с гораздо меньшим количеством шаблонов по всему коду. –