2015-09-22 5 views
0

Возможно ли создать что-то вроде события в java, которое будет запущено, если было выбрано исключение?Java: событие, которое запускает, если было выбрано исключение.

Я хочу сделать что-то вроде системы отслеживания исключений, которая отправляет все Исключение на центральный сервер.

Возможно ли это, или мне нужно вызвать метод на себя в каждом блоке catch?

ответ

2

Рекомендуемый способ справиться с этим был бы с протоколированием (например, SLF4J и Logback). Вы можете настроить регистраторы для отправки сообщений на централизованный сервер ведения журнала, но вам все равно необходимо вручную зарегистрировать исключение и, если применимо, обработать его.

Если бы вы надеялись на автоматический способ просто забыть об исключениях, это на самом деле невозможно. Обработка исключений не так проста, как может показаться, если вы намерены сделать ваши приложения надежными и легко отлаживаемыми.

Хороший дополнительный «трюк» - использовать Thread.setDefaultUncaughtExceptionHandler() для обеспечения окончательной отказоустойчивости. Его единственная работа должна заключаться в регистрации любых исключений, которые не обрабатываются в другом месте. Однако это должно произойти только в случае массового сбоя, и stacktrace может быть потерян. Если он вызывается только потому, что какой-то ввод был неправильного формата, ваш дизайн и код плохого качества.

+0

Таким образом, нет возможности получить исключения, которые не выбрасываются моими собственными методами, а самим API или java? – Ybrin

+0

@Ybrin Конечно. Вы можете поймать их так же, как и любые исключения, нет необходимости в каких-либо особых проблемах, выбрасываете ли вы исключение, или API Java/3rd Party бросает исключение. – Kayaman

+0

Спасибо, это был ответ, который я искал. – Ybrin

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