Раскрытие загадки java.lang.reflect.IndictionTargetException
В запутанном мире программирования на Java можно столкнуться с запутанной проблемой исключение java.lang.reflect.IndictionTargetException. Это исключение, часто встречающееся при использовании отражения, может оставить разработчиков в недоумении относительно его основной причины.
Чтобы пролить свет на эту загадку, давайте углубимся в предоставленный код:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
Здесь целью является вызов метода с использованием отражения. Однако вместо ожидаемого исключения (например, ArrayIndexOutOfBoundsException) появляется исключение InvocatageTargetException. Чтобы решить эту дилемму, очень важно понимать, что отражение добавляет дополнительный уровень абстракции к вызовам методов.
Когда метод вызывается посредством отражения, уровень отражения инкапсулирует любое исключение, возникающее в вызываемом методе, в InvoctionTargetException. Это позволяет различать исключения, возникающие из-за сбоев вызова отражения (например, список недопустимых аргументов), и подлинные исключения в целевом методе.
Чтобы разгадать тайну, просто раскройте причину, встроенную в InvoctionTargetException. Этого можно добиться с помощью:
Например:
try {...} catch (InvocationTargetException ex) { log.error("oops!", ex.getCause()) }
Обнаружив исходное исключение, вы сможете получить представление об истинной природе проблемы и принять соответствующие меры по ее устранению.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3