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

Java throw Exception實現(xiàn)異常轉(zhuǎn)換

 更新時間:2020年04月24日 09:03:31   作者:flydean程序那些事  
這篇文章主要介紹了Java throw Exception實現(xiàn)異常轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

簡介

之前的文章我們講到,在stream中處理異常,需要將checked exception轉(zhuǎn)換為unchecked exception來處理。

我們是這樣做的:

  static <T> Consumer<T> consumerWrapper(
      ThrowingConsumer<T, Exception> throwingConsumer) {

    return i -> {
      try {
        throwingConsumer.accept(i);
      } catch (Exception ex) {
        throw new RuntimeException(ex);
      }
    };
  }

將異常捕獲,然后封裝成為RuntimeException。

封裝成RuntimeException感覺總是有那么一點點問題,那么有沒有什么更好的辦法?

throw小訣竅

java的類型推斷大家應(yīng)該都知道,如果是 這樣的形式,那么T將會被認為是RuntimeException!

我們看下例子:

public class RethrowException {

  public static <T extends Exception, R> R throwException(Exception t) throws T {
    throw (T) t; // just throw it, convert checked exception to unchecked exception
  }
}

上面的類中,我們定義了一個throwException方法,接收一個Exception參數(shù),將其轉(zhuǎn)換為T,這里的T就是unchecked exception。

接下來看下具體的使用:

@Slf4j
public class RethrowUsage {

  public static void main(String[] args) {
    try {
      throwIOException();
    } catch (IOException e) {
      log.error(e.getMessage(),e);
      RethrowException.throwException(e);
    }
  }

  static void throwIOException() throws IOException{
    throw new IOException("io exception");
  }
}

上面的例子中,我們將一個IOException轉(zhuǎn)換成了一個unchecked exception。

總結(jié)

本文介紹了一種特殊的異常轉(zhuǎn)換的例子,大家可以參考一下。

本文的例子https://github.com/ddean2009/learn-java-streams/tree/master/rethrow-exception

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入淺析Spring 的aop實現(xiàn)原理

    深入淺析Spring 的aop實現(xiàn)原理

    AOP(Aspect-OrientedProgramming,面向方面編程),可以說是OOP(Object-Oriented Programing,面向?qū)ο缶幊蹋┑难a充和完善。本文給大家介紹Spring 的aop實現(xiàn)原理,感興趣的朋友一起學習吧
    2016-03-03
  • Spring6當中獲取Bean的四種方式小結(jié)

    Spring6當中獲取Bean的四種方式小結(jié)

    Spring 為Bean 的獲取提供了多種方式,通常包括4種方式,(也就是說在Spring中為Bean對象的創(chuàng)建準備了多種方案,目的是:更加靈活),本文將通過代碼示例詳細的給大家介紹了一下這四種方式,需要的朋友可以參考下
    2024-04-04
  • Spring三種方法的注解自動注入問題

    Spring三種方法的注解自動注入問題

    這篇文章主要介紹了Spring三種方法的注解自動注入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • spring aop的簡單使用方法詳解

    spring aop的簡單使用方法詳解

    這篇文章主要介紹了spring aop的簡單使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java多線程 Producer and Consumer設(shè)計模式

    Java多線程 Producer and Consumer設(shè)計模式

    這篇文章主要介紹了Java多線程 Producer and Consumer設(shè)計模式,producer是生產(chǎn)者的意思:指生產(chǎn)數(shù)據(jù)的線程,consumer是消費者的意思,指的是使用數(shù)據(jù)的線程,下文圍繞Producer及Consumer展開話題,需要的朋友可以參考一下
    2021-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)篇之實現(xiàn)二叉搜索樹的核心方法

    Java數(shù)據(jù)結(jié)構(gòu)篇之實現(xiàn)二叉搜索樹的核心方法

    二叉搜索樹是一種常用的數(shù)據(jù)結(jié)構(gòu),它是一棵二叉樹,且每個節(jié)點的值都大于其左子樹中任何節(jié)點的值,而小于其右子樹中任何節(jié)點的值,這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)篇之實現(xiàn)二叉搜索樹的核心方法,需要的朋友可以參考下
    2023-12-12
  • Mybatis之類型處理器TypeHandler的作用與自定義方式

    Mybatis之類型處理器TypeHandler的作用與自定義方式

    這篇文章主要介紹了Mybatis之類型處理器TypeHandler的作用與自定義方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring?Boot2.6.0新特性之默認禁止循環(huán)引用

    Spring?Boot2.6.0新特性之默認禁止循環(huán)引用

    Spring?Boot2.6.0為我們帶來很多好用的新特性/改進,這篇文章主要給大家介紹了關(guān)于Spring?Boot2.6.0新特性之默認禁止循環(huán)引用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • 關(guān)于ThreadLocal和InheritableThreadLocal解析

    關(guān)于ThreadLocal和InheritableThreadLocal解析

    這篇文章主要介紹了關(guān)于ThreadLocal和InheritableThreadLocal解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot+Redis使用AOP防止重復(fù)提交的實現(xiàn)

    SpringBoot+Redis使用AOP防止重復(fù)提交的實現(xiàn)

    本文主要介紹了SpringBoot+Redis使用AOP防止重復(fù)提交的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論

台南县| 兴文县| 凌源市| 阳谷县| 铜山县| 前郭尔| 盐亭县| 杨浦区| 滨海县| 宜春市| 辉县市| 赣州市| 肥西县| 广灵县| 宝坻区| 油尖旺区| 泰来县| 大名县| 绥阳县| 邻水| 古丈县| 宜都市| 淮阳县| 宜兴市| 普定县| 尚义县| 桑日县| 烟台市| 北碚区| 通化县| 广东省| 甘谷县| 明光市| 宁南县| 嵩明县| 且末县| 江津市| 镇雄县| 富宁县| 西华县| 临邑县|