Перейти к содержимому

Invocationtargetexception java что это

  • автор:

Что вызывает java.lang.reflect.InvocationTargetException?

При работе с Java Reflection API часто встречается java.lang.reflect.InvocationTargetException .

В этом уроке мы рассмотрим это и как с этим справиться на простом примере .

2. Причина InvocationTargetException

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

Слой отражения оборачивает фактическое исключение, созданное методом, с помощью InvocationTargetException .

Попробуем понять это на примере.

Мы напишем класс с методом, который намеренно выдает исключение:

 public class InvocationTargetExample    public int divideByZeroExample()    return 1 / 0;   >   > 

Давайте вызовем вышеуказанный метод, используя отражение в простом тесте JUnit 5:

 InvocationTargetExample targetExample = new InvocationTargetExample();   Method method =   InvocationTargetExample.class.getMethod("divideByZeroExample");    Exception exception =   assertThrows(InvocationTargetException.class, () -> method.invoke(targetExample)); 

В приведенном выше коде мы установили InvocationTargetException , которое возникает при вызове метода. Здесь важно отметить, что фактическое исключение — в данном случае ArithmeticException — заворачивается в InvocationTargetException .

Теперь, почему отражение не выдает фактическое исключение в первую очередь?

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

3. Как обрабатывать исключение InvocationTargetException ?​

Здесь фактическое основное исключение является причиной InvocationTargetException , поэтому мы можем использовать Throwable.getCause() , чтобы получить больше информации об этом.

Давайте посмотрим, как мы можем использовать getCause() для получения фактического исключения в том же примере, что и выше:

 assertEquals(ArithmeticException.class, exception.getCause().getClass()); 

Мы использовали метод getCause() для того же объекта исключения , который был сгенерирован. И мы заявили ArithmeticException.class как причину исключения.

Таким образом, как только мы получим базовое исключение, мы можем повторно сгенерировать его, обернуть его в какое-либо пользовательское исключение или просто зарегистрировать исключение в соответствии с нашим требованием.

4. Вывод​

В этой короткой статье мы увидели, как слой отражения оборачивает любое базовое исключение.

Мы также увидели, как определить основную причину InvocationTargetException и как справиться с таким сценарием на простом примере.

Как обычно, код, использованный в этой статье, доступен на GitHub .

  • 1. Обзор
  • 2. Причина InvocationTargetException
  • 3. Как обрабатывать исключение InvocationTargetException ?
  • 4. Вывод

Как обработать исключение reflect.InvocationTargetException?

При попытке вызвать search при незаполненных полях EditText, программа вылетает с ошибкой Caused by: java.lang.reflect.InvocationTargetException . При попытке обработать эту ошибку в catch, студия пишет, что эту ошибку нельзя обработать в try-catch, поскольку она к ней не относится. Это, конечно, правильно, так и есть, но как же всё-таки можно её перехватить при незаполненных EditText и написать юзеру типа «поля то заполни!»? Вот для наглядности кусок кода:

public void search (View view)

Полный текст ошибки:

E/AndroidRuntime: FATAL EXCEPTION: main Process: ru.golgofa.wordfinder, PID: 26849 java.lang.IllegalStateException: Could not execute method for android:onClick at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390) at android.view.View.performClick(View.java:6294) at android.view.View$PerformClick.run(View.java:24770) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) at android.view.View.performClick(View.java:6294) at android.view.View$PerformClick.run(View.java:24770) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.NumberFormatException: For input string: "" at java.lang.Integer.parseInt(Integer.java:620) at java.lang.Integer.parseInt(Integer.java:643) at ru.golgofa.wordfinder.MainActivity.search(MainActivity.java:87) 

Invocation Target Exception Класс

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

[Android.Runtime.Register("java/lang/reflect/InvocationTargetException", DoNotGenerateAcw=true)] public class InvocationTargetException : Java.Lang.ReflectiveOperationException
[] type InvocationTargetException = class inherit ReflectiveOperationException

Наследование
InvocationTargetException

Комментарии

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

В выпуске 1.4 это исключение было обновлено для соответствия механизму цепочки исключений общего назначения. «Целевое исключение», предоставляемое во время создания и доступ к которому осуществляется с помощью #getTargetException() метода , теперь называется причиной и может быть доступно с помощью метода , а также с помощью Throwable#getCause() упомянутого выше «устаревшего метода».

Добавлено в версии 1.1.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

Создает с в InvocationTargetException null качестве целевого исключения.

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Создает исключение InvocationTargetException с целевым исключением.

Создает исключение InvocationTargetException с целевым исключением и подробным сообщением.

Поля

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Свойства

Возвращает причину этого бросаемого объекта или null значение , если причина не существует или неизвестна.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Является устаревшей.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Дескриптор базового экземпляра Android.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Создает локализованное описание этого вызываемого объекта.

Возвращает строку подробного сообщения этого бросаемого объекта.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Получите исключение созданного целевого объекта.

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Добавляет указанное исключение к исключениям, которые были подавлены для доставки этого исключения.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Заполняет трассировку стека выполнения.

Предоставляет программный доступ к сведениям трассировки стека, напечатанным с помощью #printStackTrace() .

Возвращает массив, содержащий все исключения, которые были подавлены, как правило, инструкцией try -with-resources для доставки этого исключения.

Инициализирует причину этого вызываемого объекта указанным значением.

Выводит этот бросаемый объект и его обратную трассировку в стандартный поток ошибок.

Выводит этот бросаемый объект и его обратную трассировку в указанный поток печати.

Печатает этот бросаемый объект и его обратную трассировку в указанный модуль записи печати.

Задает элементы трассировки стека, которые будут возвращены #getStackTrace() и напечатаны соответствующими методами #printStackTrace() .

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Явные реализации интерфейса

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Методы расширения

Выполняет преобразование типа, проверенное средой выполнения Android.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

InvocationTargetException — это проверенное исключение, которое создает оболочку для исключения, вызванного методом или конструктором.

Invocationtargetexception java что это

Пожалуйста, учтите, что спецификации и другая информация, содержащаяся здесь, не являются заключительными и могут быть изменены. Информация доступна для вас исключительно ради ознакомления.

Платформа Java™
Стандарт Эд. 8

Проект сборка-b92

compact1, compact2, compact3
java.lang.reflect

Класс InvocationTargetException

  • java.lang. Объект
    • java.lang. Throwable
      • java.lang. Исключение
        • java.lang. ReflectiveOperationException
          • java.lang.reflect.InvocationTargetException
          • Все Реализованные Интерфейсы: Сериализуемый

          InvocationTargetException является проверенным исключением, которое обертывает исключение, выданное вызванным методом или конструктором. С выпуска 1.4 это исключение было retrofitted, чтобы соответствовать объединяющему в цепочку исключение механизму общего назначения. «Целевое исключение», которое обеспечивается во время создания и получается доступ через getTargetException() метод теперь известен как причина, и может быть получен доступ через Throwable.getCause() метод, так же как вышеупомянутый «метод наследства.»

          Сводка конструктора

          Конструкторы

          Модификатор Конструктор и Описание
          protected InvocationTargetException()

          Конструкции InvocationTargetException с null как целевое исключение.
          Создает InvocationTargetException с целевым исключением.
          Создает InvocationTargetException с целевым исключением и сообщением детали.

          Сводка метода

          Все Методы Методы экземпляра Конкретные Методы

          Модификатор и Тип Метод и Описание
          Throwable getCause()

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

          Методы, наследованные от class java.lang. Throwable

          Методы, наследованные от class java.lang. Объект

          Деталь конструктора

          InvocationTargetException
          protected InvocationTargetException()

          Конструкции InvocationTargetException с null как целевое исключение.

          InvocationTargetException
          public InvocationTargetException(Throwable target)

          Создает InvocationTargetException с целевым исключением.

          InvocationTargetException
          public InvocationTargetException(Throwable target, String s)

          Создает InvocationTargetException с целевым исключением и сообщением детали.

          Деталь метода

          getTargetException
          public Throwable getTargetException()

          Получите выданное целевое исключение. Этот метод предшествует средству объединения в цепочку исключения общего назначения. Throwable.getCause() метод является теперь привилегированными средствами получения этой информации.

          getCause
          public Throwable getCause()

          Возвращает причину этого исключения (выданное целевое исключение, которое может быть null ).
          Платформа Java™
          Стандарт Эд. 8

          Проект сборка-b92

          Представьте ошибку или функцию
          Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
          Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
          Проект сборка-b92

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *