Я записал класс Java, где, если метод выдает исключение, электронное письмо послано, через почту Java, с отчетом администраторам.
Это работает - моим вопросом является w.r.t элегантность - для ловли исключения, выданного основным методом, sendEmail (), метод находится в блоке выгоды основного метода. sendEmail () метод имеет свой собственный блок try-catch.
В действительности - это похоже ниже - существует ли более красивый способ записать это?
try {
foo;
}
catch {
try{
sendEmail();
}
catch {
log(e.message);
}
}
Java может иметь вложенные блоки try / catch.
Если вы хотите, вы можете переместить блок try / catch sendmail в другой метод. Когда блоки try / catch будут более сложными, это облегчит понимание кода.
Если вы хотите чего-то "более элегантного", одно простое предложение заключается в том, чтобы ваш вспомогательный метод sendEmail
перехватывал и записывал в журнал исключения электронной почты. (Я не думаю, что вы хотите, чтобы исключения распространялись ... или делали какое-то другое восстановление ...)
Однако есть кое-что более важное. То, что вы здесь реализуете, - это неправильный подход к сообщению об ошибках.
Если что-то пойдет не так с вашим приложением, есть вероятность, что вы будете заваливать администратора многочисленными письмами с сообщениями об одной и той же проблеме снова, и снова, и снова...
Отправляя письма из глубины своего кода, вы затрудняете администратору интеграцию отчетов об ошибках вашего приложения.
Лучшим подходом является сообщение о проблеме через Java-фреймворк регистрации, такой как Log4J. Если администратор захочет, он/она может настроить какую-либо систему мониторинга, например LogWatch, Nagios и т.д. и т.п. Такая система мониторинга будет обнаруживать и классифицировать ошибки, аномалии и т.д. (например, ошибки вашего приложения) в различных потоках логгеров, дедуплицировать их и если администратор настроит ее, отправлять уведомление по электронной почте, на пейджер или еще куда-нибудь.