Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Как отловить exception если он обработан внутри и не пробрасывается? (Java)

#java #исключения


Суть проблемы следующая:

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

Как с минимальным вмешательством в код выловить информацию о всех исключениях (вместе
со стеком)? 
Возможно обернуть в другой класс? Если да, то как сделать что бы гарантированно я
мог узнать о всех эксепшенах? 
    


Ответы

Ответ 1



Если нет возможности изменить исходный код или это очень сложно, то можно использовать модификацию байткода (bytecode instrumentation). Например с помощью библиотеки ASM и метода MethodVisitor.visitTryCatchBlock найти все блоки try\catch и модифицировать их таким образом, чтобы все исключения перед обработкой сохранялись в некоторую структуру данных или выводились в лог.

Комментариев нет:

Отправить комментарий