欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文深入理解Java中的java.lang.reflect.InvocationTargetException錯(cuò)誤

 更新時(shí)間:2024年03月21日 09:06:52   作者:跡憶客  
這篇文章主要給大家介紹了關(guān)于Java中java.lang.reflect.InvocationTargetException錯(cuò)誤的相關(guān)資料,java.lang.reflect.InvocationTargetException是Java中的一個(gè)異常類(lèi),它通常是由反射調(diào)用方法時(shí)拋出的異常,需要的朋友可以參考下

Java 中的 java.lang.reflect.InitationTargetException 錯(cuò)誤

當(dāng)開(kāi)發(fā)人員使用 Java Reflection API 時(shí),java.lang.reflect.InitationTargetException 是一個(gè)非常常見(jiàn)的異常。 檢查的異常保存由調(diào)用的方法或構(gòu)造函數(shù)拋出的異常。

從 JDK 1.4 版本開(kāi)始,該異常已被改進(jìn)以符合通用異常鏈機(jī)制。 簡(jiǎn)而言之,每當(dāng)開(kāi)發(fā)人員嘗試使用 Method.invoke() 調(diào)用一個(gè)類(lèi)時(shí),我們都會(huì)收到 InvocableTargetException ,并且它被 java.lang.reflect.InvokeTargetException 包裹。

java.lang.reflect.InvocableTargetException錯(cuò)誤的原因

IncationTargetException 主要發(fā)生在開(kāi)發(fā)人員使用反射層并嘗試調(diào)用本身引發(fā)底層異常的構(gòu)造函數(shù)或方法時(shí)。 因此,Java 反射 API 將方法拋出的異常包裝為 InvoicationTargetException。

讓我們看一個(gè)代碼示例來(lái)更好地理解它。

示例代碼:

import java.lang.reflect.*;

public class Test {
    public int divideByZero() {
        return 89/ 0;
    }

    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException {
        Test obj = new Test();
        Method method = Test.class.getMethod("divideByZero");
        try {
            method.invoke(obj);
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

輸出:

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at Test.main(Test.java:13)
Caused by: java.lang.ArithmeticException: / by zero
    at Test.divideByZero(Test.java:6)
    ... 5 more

修復(fù) Java 中的 java.lang.reflect.InitationTargetException 錯(cuò)誤

根據(jù)上面的內(nèi)容,我們了解到底層異常是導(dǎo)致 java.lang.reflect.InitationTargetException 錯(cuò)誤的原因。 我們可以使用 Throwable 類(lèi)的 getCause() 方法獲取有關(guān)底層異常的更多信息。

因此,解決 IncationTargetException 涉及查找并解決底層異常。

示例代碼:

import java.lang.reflect.*;

public class Test {
    public int divideByZero() {
        return 89/ 0;
    }

    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException
    {
        Test obj = new Test();
        Method method = Test.class.getMethod("divideByZero");
        try {
            method.invoke(obj);
        }
        catch (InvocationTargetException e)
        {
            System.out.println(e.getCause());
        }
    }
}

輸出:

java.lang.ArithmeticException: / by zero

在上面的輸出中,實(shí)際的底層異常是 ArithmeticException,因?yàn)槲覀兂粤愣l(fā)生。

一旦我們修復(fù)了底層異常,InitationTargetException 也得到了解決。 以下是完整的工作代碼,無(wú)一例外; 我們剛剛刪除了除以零的部分。

完整源代碼:

import java.lang.reflect.*;

public class Test {
    public int divideByZero() {
        return 89/ 9;
    }

    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException
    {
        Test obj = new Test();
        Method method = Test.class.getMethod("divideByZero");
        try {
            method.invoke(obj);
        }
        catch (InvocationTargetException e)
        {
            e.printStackTrace();
        }
    }
}

總結(jié)

在本文中,我們了解了在 Java 中使用反射層時(shí)如何包裝底層異常。 我們了解了在使用 java.lang.reflect.InitationTargetException 時(shí)如何獲取底層異常以及如何解決它。

到此這篇關(guān)于Java中java.lang.reflect.InvocationTargetException錯(cuò)誤的文章就介紹到這了,更多相關(guān)java.lang.reflect.InvocationTargetException錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis通用Mapper和PageHelper的過(guò)程詳解

    MyBatis通用Mapper和PageHelper的過(guò)程詳解

    這篇文章主要介紹了MyBatis通用Mapper和PageHelper的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • springboot批量接收對(duì)象參數(shù),接收List方式

    springboot批量接收對(duì)象參數(shù),接收List方式

    在Spring Boot項(xiàng)目中,批量接收對(duì)象參數(shù)可以通過(guò)自定義對(duì)象和使用`@RequestBody`注解來(lái)實(shí)現(xiàn),首先,定義一個(gè)包含列表的自定義對(duì)象,然后在Controller中使用該對(duì)象接收前端傳遞的JSON數(shù)組,通過(guò)Postman模擬請(qǐng)求,可以成功批量接收并處理對(duì)象參數(shù)
    2025-02-02
  • 深入講解Java中的多態(tài)和抽象類(lèi)

    深入講解Java中的多態(tài)和抽象類(lèi)

    這篇文章主要介紹了深入講解Java中的多態(tài)和抽象類(lèi),有時(shí)候,設(shè)計(jì)一個(gè)數(shù)組或方法的參數(shù),返回值類(lèi)型時(shí),無(wú)法確定具體的類(lèi)型,只能確定是某個(gè)系列的類(lèi)型,這時(shí)就引入了多態(tài),需要的朋友可以參考下
    2023-08-08
  • 手把手帶你實(shí)現(xiàn)第一個(gè)Mybatis程序

    手把手帶你實(shí)現(xiàn)第一個(gè)Mybatis程序

    這篇文章主要介紹了mybatis實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin解決辦法

    java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin解決辦法

    在使用Gradle時(shí)開(kāi)發(fā)者可能會(huì)遇到org.gradle?.api.plugins.MavenPlugin報(bào)錯(cuò)提醒,這篇文章主要給大家介紹了關(guān)于java中g(shù)radle項(xiàng)目報(bào)錯(cuò)org.gradle?.api.plugins.MavenPlugin的解決辦法,需要的朋友可以參考下
    2023-12-12
  • 深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同

    深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同

    這篇文章主要介紹了深入了解Java語(yǔ)言中的并發(fā)性選項(xiàng)有何不同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟

    Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟

    本文主要介紹了Maven導(dǎo)入本地jar包的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot使用異步線(xiàn)程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送

    SpringBoot使用異步線(xiàn)程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送

    本文主要介紹了SpringBoot使用異步線(xiàn)程池實(shí)現(xiàn)生產(chǎn)環(huán)境批量數(shù)據(jù)推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Java StringBuilder和StringBuffer源碼分析

    Java StringBuilder和StringBuffer源碼分析

    這篇文章主要針對(duì)Java中兩個(gè)常用的操作字符串的類(lèi) StringBuilder和StringBuffer進(jìn)行源碼分析,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java中創(chuàng)建線(xiàn)程池的幾種方式以及區(qū)別

    Java中創(chuàng)建線(xiàn)程池的幾種方式以及區(qū)別

    創(chuàng)建線(xiàn)程池有多種方式,主要通過(guò) Java 的 java.util.concurrent 包提供的 Executors 工具類(lèi)來(lái)實(shí)現(xiàn),本文給大家介紹了幾種常見(jiàn)的線(xiàn)程池類(lèi)型及其區(qū)別,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-11-11

最新評(píng)論