2010-05-30 8 views
5

Я написал класс java, где, если метод генерирует исключение, электронное письмо отправляется через java-почту с сообщением администраторам.Отправка сообщения электронной почты при удалении исключения

Работает - мой вопрос w.r.t elegance - чтобы поймать исключение, вызванное основным методом, метод sendEmail() находится в блоке catch основного метода. Метод sendEmail() имеет свой собственный блок try-catch.

Фактически - это выглядит ниже - есть ли более красивый способ написать это?

try { 
    foo; 
} 
catch { 
    try{ 
    sendEmail(); 
    } 
    catch { 
    log(e.message); 
    } 
} 

ответ

3

Java может иметь вложенные блоки try/catch.

Если вы хотите, вы можете переместить блок sendmail try/catch в другой метод. Когда блоки try/catch более сложны, это облегчит понимание кода.

19

Если вы хотите что-то «более изящное», одно из простых предложений заключается в том, чтобы ваш вспомогательный метод sendEmail улавливал и регистрировал исключения электронной почты. (Я не думаю, вы хотите исключение распространять ... или какое-либо другое восстановление ...)


Однако, есть что-то более важно сказать. Здесь вы используете неправильный подход к сообщениям об ошибках.

  • Если что-то идет ужасно неправильно с приложением, есть шанс, что вы будете СПАМ администратору несколько сообщений электронной почты отчетов с той же проблемой снова, и снова, и снова ...

  • путем отправки электронных писем из глубины вашего кода вы затрудняете интеграцию отчетов об ошибках вашего приложения.

Лучшим подходом является сообщение о проблеме с помощью каротажа Java, такого как Log4J. Если администратор хочет, чтобы он/она мог настроить какую-то систему мониторинга, такую ​​как LogWatch, Nagios и т. Д. И т. Д. Такая система мониторинга будет обнаруживать и классифицировать ошибки, аномалии и т. Д. (Например, ошибки вашего приложения) в различных журнальных потоках, -dup, и , если администратор настроит его, отправьте уведомление по электронной почте, пейджеру или тому подобное.

+1

+1 «Ведение журнала + оффлайн-действие» действительно так лучше – JoseK

+1

+1, всегда отключайте код приложения от мониторинга на сайте (контакты с администраторами и т. Д.), –

Смежные вопросы