最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lombok 的@StandardException注解解析

 更新時(shí)間:2023年05月11日 09:46:23   作者:明明如月學(xué)長(zhǎng)  
@StandardException 是一個(gè)實(shí)驗(yàn)性的注解,添加到 Project Lombok 的 v__1.18.22 版本中,在本教程中,我們將使用 Lombok 的 @StandardException 注解自動(dòng)生成異常類型類的構(gòu)造函數(shù),需要的朋友可以參考下

1. 引言

在 Java 應(yīng)用程序中,異常類對(duì)于正確捕獲和處理錯(cuò)誤至關(guān)重要。我們常常在編寫異常處理的重復(fù)代碼上花費(fèi)時(shí)間,而不是關(guān)注應(yīng)用程序的其他方面。

在本教程中,我們將使用 Lombok 的 @StandardException 注解自動(dòng)生成異常類型類的構(gòu)造函數(shù)。此外,我們還將了解其優(yōu)缺點(diǎn)。

2. 什么是 @StandardException?

@StandardException 是一個(gè)實(shí)驗(yàn)性的注解,添加到 Project Lombok 的 v__1.18.22 版本中。該注解適用于任何 Throwable 的子類,并自動(dòng)生成四個(gè)構(gòu)造函數(shù):

  • 一個(gè)無參數(shù)構(gòu)造函數(shù)
  • 一個(gè)僅帶消息的構(gòu)造函數(shù),無異常原因
  • 一個(gè)僅帶異常原因的構(gòu)造函數(shù),無消息
  • 一個(gè)帶有消息和異常原因的標(biāo)準(zhǔn)構(gòu)造函數(shù)

與大多數(shù) Lombok 注解一樣,@StandardException 非常簡(jiǎn)單,我們將在以下部分看到。

2.1. 添加 Lombok 依賴

我們需要使用 Project Lombok 的 v.1.18.22 或更高版本來使用該注解。因此,讓我們將最新的 lombok::1.18.26 添加到我們的 pom.xml 文件中:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
    <scope>provided</scope>
</dependency>

2.2. 使用類注解

要在我們的異常中使用 @StandardException,我們必須創(chuàng)建一個(gè)擴(kuò)展 Throwable 類或其任何子類的目標(biāo)類。因此,它適用于檢查和未檢查異常以及錯(cuò)誤。

為了說明,讓我們創(chuàng)建一個(gè) CustomException 類:

@StandardException
public class CustomException extends Throwable {
}

由于 CustomException 擴(kuò)展了 Throwable,代碼正常編譯。讓我們看看編譯后生成的代碼:

public class CustomException extends Throwable {
    public CustomException() {
        this((String)null, (Throwable)null);
    }
    public CustomException(String message) {
        this(message, (Throwable)null);
    }
    public CustomException(Throwable cause) {
        this(cause != null ? cause.getMessage() : null, cause);
    }
    public CustomException(String message, Throwable cause) {
        super(message);
        if (cause != null) {
            super.initCause(cause);
        }
    }
}

Lombok 注解的工作方式與實(shí)現(xiàn)自定義異常構(gòu)造函數(shù)的通常 Java 方法不同。通常,JDK 通過調(diào)用指定簽名的 super 構(gòu)造函數(shù)版本來實(shí)現(xiàn)它們。例如,僅包含異常原因的構(gòu)造函數(shù)在其實(shí)現(xiàn)中將調(diào)用 super(cause)。

另一方面,Lombok 的前三個(gè)構(gòu)造函數(shù)依賴于生成的標(biāo)準(zhǔn)構(gòu)造函數(shù)來構(gòu)建異常對(duì)象。標(biāo)準(zhǔn)構(gòu)造函數(shù)調(diào)用 super(message) 來構(gòu)建初始對(duì)象。然后,如果不是 null,它使用 initCause() 方法初始化 CustomException 的原因

在使用注解時(shí),我們必須考慮這兩種實(shí)現(xiàn)的不同細(xì)微差別。

接下來,我們將在下一部分中討論與通常方法相比,@StandardException 的一些優(yōu)點(diǎn)和缺點(diǎn)。

3. 優(yōu)點(diǎn)

使用 @StandardException 的主要優(yōu)點(diǎn)是我們避免了編寫樣板代碼。例如,在純 Java 中創(chuàng)建一個(gè) NumberFormatException 的子類可能是這樣的:

public class CustomNumberFormatException extends NumberFormatException{
    public CustomNumberFormatException() {
        super();
    }
    public CustomNumberFormatException(String s) {
        super(s);
    }
}

在上面的代碼中,我們手動(dòng)使用 NumberFormatException 的可用 super 構(gòu)造函數(shù)創(chuàng)建了構(gòu)造函數(shù)。

在實(shí)際應(yīng)用程序中,該代碼通常會(huì)在異常類之間重復(fù)。因此,我們最終多次復(fù)制粘貼相同的代碼。當(dāng)異常類數(shù)量較多時(shí),這會(huì)更難維護(hù)。

相比之下,**通過使用 @StandardException,我們可以通過一行代碼獲得四個(gè)自動(dòng)生成的構(gòu)造函數(shù)。**因此,它可能會(huì)提高開發(fā)速度并改善代碼可維護(hù)性。

關(guān)于 @StandardException 的另一個(gè)好點(diǎn)是,生成的構(gòu)造函數(shù)僅使用 super(message) 構(gòu)造函數(shù),這在大多數(shù) Java 異常中都存在。因此,我們避免了調(diào)用在父類中不存在的 super 構(gòu)造函數(shù)。例如,NumberFormatException 沒有定義標(biāo)準(zhǔn)和僅異常原因構(gòu)造函數(shù)。因此,在其子類中調(diào)用 super(message, cause) 或 super(cause) 將失敗。

最后,所有使用 @StandardException 的異常都具有 Lombok 實(shí)現(xiàn)的相同行為。由于 Lombok 自動(dòng)生成代碼,我們無法修改它。因此,我們不太可能向使用 @StandardException 注解的類中引入潛在的問題代碼

4. 缺點(diǎn)

使用代碼生成器的一個(gè)明顯缺點(diǎn)是增加了調(diào)試的復(fù)雜性。在編寫的代碼中調(diào)試和發(fā)現(xiàn)缺陷比在生成的代碼中更容易。因此,如果某些內(nèi)容運(yùn)行不正確,使用 @StandardException 可能會(huì)使調(diào)試會(huì)話變得復(fù)雜。

另一個(gè)需要考慮的陷阱是對(duì) Lombok 的依賴。將我們的代碼與 @StandardException 耦合會(huì)增加返回純Java 時(shí)的工作量。此外,如果 Lombok 方面出現(xiàn)問題,將影響所有使用該注解的異常。

5. 結(jié)論

在這篇簡(jiǎn)短的文章中,我們學(xué)習(xí)了如何使用添加到 Lombok 版本 v.1.18.22 的 @StandardException。我們還了解了與純 Java 代碼手動(dòng)實(shí)現(xiàn)相比的一些優(yōu)缺點(diǎn)。

關(guān)鍵是在我們的應(yīng)用程序中平衡其優(yōu)點(diǎn)和缺點(diǎn),而不是濫用它。

與往常一樣,源代碼可以在 GitHub 上找到。

到此這篇關(guān)于Lombok 的@StandardException注解介紹的文章就介紹到這了,更多相關(guān)Lombok @StandardException注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式

    SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式

    這篇文章主要介紹了SpringCloud之consul服務(wù)注冊(cè)與發(fā)現(xiàn)、配置管理、配置持久化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • springboot 如何解決static調(diào)用service為null

    springboot 如何解決static調(diào)用service為null

    這篇文章主要介紹了springboot 如何解決static調(diào)用service為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 關(guān)于Java for循環(huán)的正確用法介紹

    關(guān)于Java for循環(huán)的正確用法介紹

    Java里的循環(huán)結(jié)構(gòu)我們可以通過while、do-while、for、foreach等方式實(shí)現(xiàn)循環(huán),這篇文章會(huì)把這幾種循環(huán)方式都給大家講解到,但本文主要介紹for循環(huán)的使用,感興趣的同學(xué)可以參考閱讀
    2023-05-05
  • java設(shè)計(jì)優(yōu)化之單例模式

    java設(shè)計(jì)優(yōu)化之單例模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)優(yōu)化中的單例模式,深入學(xué)習(xí)java單例模式,感興趣的朋友可以參考一下
    2016-03-03
  • Java深入淺出說流的使用

    Java深入淺出說流的使用

    這篇文章主要介紹了Java深入淺出說流的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot 返回Html界面的操作代碼

    SpringBoot 返回Html界面的操作代碼

    這篇文章主要介紹了SpringBoot 返回Html界面的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 深入理解Struts2國(guó)際化信息機(jī)制

    深入理解Struts2國(guó)際化信息機(jī)制

    本篇文章主要介紹了深入理解Struts2國(guó)際化信息機(jī)制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • flutter?TabBarView?動(dòng)態(tài)添加刪除頁面的示例代碼

    flutter?TabBarView?動(dòng)態(tài)添加刪除頁面的示例代碼

    在Flutter中使用TabBarView動(dòng)態(tài)添加和刪除頁面時(shí),如果未為每個(gè)頁面設(shè)置唯一的key,會(huì)導(dǎo)致刪除頁面時(shí)出現(xiàn)狀態(tài)錯(cuò)誤或刪除錯(cuò)誤的頁面,正確的做法是為每個(gè)頁面指定全局唯一的key,這樣可以確保頁面在添加和刪除時(shí)狀態(tài)正確,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Mybatis3 if判斷字符串變態(tài)寫法

    Mybatis3 if判斷字符串變態(tài)寫法

    這篇文章主要介紹了Mybatis3 if判斷字符串變態(tài)的寫法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-01-01
  • Spring Boot產(chǎn)生環(huán)形注入的解決方案

    Spring Boot產(chǎn)生環(huán)形注入的解決方案

    這篇文章主要介紹了Spring Boot產(chǎn)生環(huán)形注入的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論

永顺县| 建水县| 花莲市| 宜章县| 金堂县| 顺义区| 英超| 沈丘县| 巫山县| 平安县| 景宁| 汽车| 天长市| 东阳市| 循化| 如皋市| 博客| 灵武市| 迁西县| 安福县| 鄯善县| 九龙坡区| 宁德市| 湟中县| 黄梅县| 海丰县| 南康市| 布尔津县| 云安县| 汉阴县| 凉城县| 诸暨市| 建宁县| 丘北县| 乌海市| 东源县| 贵南县| 阿拉善左旗| 东城区| 松阳县| 大理市|