久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

怎么在Java8中處理異常-創新互聯

本篇內容介紹了“怎么在Java8中處理異常”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

我們提供的服務有:成都網站制作、網站設計、微信公眾號開發、網站優化、網站認證、廣陵ssl等。為成百上千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的廣陵網站制作公司

我們都知道,Java 異常分為檢查異常和非檢查異常。檢查異常就是編譯器要求開發者必須處理的異常,而非檢查異常則沒有這個要求。所以當我們需要調用某個拋出檢查異常的方法時,必須明確捕獲它:

myList.stream()
  .map(item  ->
      try{
        return doSomething(item);
      } catch(MyException e){
        throw new RuntimeException (e);
      }
    })
    .forEach(System.out::printion);

如上面代碼所示,我們捕獲了 MyException 這個檢查異常,然后將其轉化為 RuntimeException 非檢查異常,重新拋出。但是你自己心里面其實清楚的很,這不是最好的處理方式。

優化一: 提升可讀性

如下所示,我們將方法體單獨提取到 trySomething 方法中,這樣的話,我們就可以使用一行代碼完成 lambda 表達式,整個代碼可讀性也會提升不少:

myList.stream()
  .map(this::trySomething)
  .forEach(System.out::printion);
private Item trySomething(Item item) {
   try{
     return doSomething(item);
   } catch(MyException e){
     throw new RuntimeException (e);
   }
}
優化二: 復用代碼

現在你已經解決了上述的問題,然而當我們再碰到需要處理異常的其它方法時,難道我們都要用 try ... catch ... 包裹一層嗎?那樣的話,你可以想象代碼中可能到處都是這種類似的寫法。為了避免陷入到這種重復的寫法中,我們應該將上述代碼片段抽象為一個小的工具類,專門用來干這件事情。你只需要定義一次,然后再需要的地方多次調用它就可以了。

為了實現這個目標,我們首先需要自己定義一個函數式接口,這個接口可能會拋出一個異常:

然后,我們來寫一個靜態幫助函數 wrap ,該方法接受一個函數式接口參數,在方法體內捕獲檢查異常,并拋出非檢查異常 RuntimeException:

借助于 wrap 靜態函數,現在你可以在 lambda 表達式中這么寫了

優化三: 出現異常時繼續運行

上述代碼的可讀性、抽象性已經很好了,然而還存在一個比較大的問題,那就是當出現異常的時候,你的 stream 代碼會立即停止,不會接著處理下一個元素。大多數情況下,當拋出異常的時候,我們可能還想讓 stream 繼續運行下去。

我們與其拋出異常,將異常當成一種特殊的情況處理,還不如直接將異常當成是一個 “正常” 的返回值。即這個函數要么返回一個正確的結果,要么返回一個異常,所以我們現在需要定義一個新的封裝類 Either,用來存儲這兩種結果。為了方便,我們將異常存儲到 left 這個字段中,將正常返回的值存儲到 right 這個字段中。下面就是 Either 類的一個簡單示例:

public class Eithercl<L,R>{
     private final L Left:
     private final R right;
     private Either(L left, R right){
         this left=left;
         this right =right;
}
public static <L, R> Either,<L,R> Left( L value) {
    return new Either(value, null):
}
public static <L, R> Either<L, R> Right( R value) {
    return new Either(null, value)
}
public Optional<L> getleft() {
    return Optional. ofnullable(left)
}
public Optional<R> getright() {
    return Optional.ofnullable(right);
}
public boolean isleft() {
    return left I- null;
}
public boolean isright(){
    return right != null;
}
public < T> optional<T> mapleft(Function<? super L, T> mapper){
    if (isleft()) {
        return Optional of(mapper. apply(left));
     }
     return Optional empty();
}
public <T> Optional<T> mapright(Function<? super R, T> mapper) {
    if (isright()) {
         return Optional of(mapper. apply(right));
    }
    return Optionalempty();
}
public String tostring(){
    if (isleft()){
        return"Left(”+left+")";
    }
    return "Right("+ right +")";
  } 
}

現在我們需要再定義一個 lift 函數,該函數內部將 function 函數正常返回的值或者拋出的異常都使用 Either 類進行了一層封裝

現在我們的代碼變成這個樣子了,也不用擔心方法拋出異常會提前終止 Stream 了

優化四: 保留原始值

現在思考一個問題,如果在上述處理過程中,當結果是異常信息的時候,我們想要重試,即重新調用這個方法怎么辦? 你會發現我們 Either 封裝類沒有保存最原始的這個值,我們丟掉了原始值,因此我們可以進一步優化,將原始值 t 也封裝進 left 字段中,就像下面這樣:

Pair 類是一個非常簡單的封裝類,用以封裝兩個值:

public class Pair<F, S> {
    public final F fst;
    public final S snd;
    private Pair(F fst, S snd){
         this fst fst;
         this snd= snd;
    }
public static <F, S> Pair<F, S> of(F fst, S snd){
    return new Pair<>(fst, snd);
    }
}

這樣,當我們遇見異常的時候,我們可以從 Pair 中取出最原始的值 t,無論是想重試,還是做一些其他操作,都很方便了。

“怎么在Java8中處理異常”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯-成都網站建設公司網站,小編將為大家輸出更多高質量的實用文章!

網站標題:怎么在Java8中處理異常-創新互聯
當前地址:http://www.js-pz168.com/article32/disosc.html

成都網站建設公司_創新互聯,為您提供企業網站制作外貿網站建設網站內鏈、搜索引擎優化、Google定制開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品欧美极品| 狠狠色狠狠色综合日日91app| 久久av资源站| 97久久久精品综合88久久| 欧美视频1区| 欧美日韩久久久久久| 国产精品视频观看| 蜜桃视频第一区免费观看| 99久久99久久| 91久久精品午夜一区二区| 久久久欧美精品sm网站| 性欧美疯狂xxxxbbbb| av男人天堂一区| 五月天亚洲综合小说网| 日韩精品一区二区三区蜜臀| 一区二区三区免费| 岛国一区二区在线观看| 日韩中文一区二区三区| 日韩精品一区二区在线观看| 亚洲韩国精品一区| eeuss影院一区二区三区| 亚洲午夜高清视频| 国产丝袜欧美中文另类| 麻豆传媒一区二区三区| 国产一区二区三区奇米久涩| 欧美三片在线视频观看| 亚洲三级小视频| 国产不卡视频在线观看| 手机看片福利永久国产日韩| 久久久夜色精品亚洲| 蜜臀久久99精品久久久久宅男| 国产精品久久久久久久免费大片| 欧美日韩精品三区| 亚洲黄色免费网站| voyeur盗摄精品| 色综合av在线| 国产精品高潮呻吟久久| 国产丶欧美丶日本不卡视频| 偷拍视频一区二区| 欧美韩国日本不卡| 国产一级精品在线| 亚洲福利av在线| 中文字幕 久热精品 视频在线| 极品少妇一区二区三区精品视频| 欧美日韩亚洲一区二区三区在线观看 | 成+人+亚洲+综合天堂| 亚洲欧美在线网| 国产精品久久午夜夜伦鲁鲁| 国产69精品久久久久777| 色综合久久99| 亚洲欧美一区二区三区极速播放| 99视频精品在线| 欧美日韩成人在线一区| 性久久久久久久久久久久 | 久久久午夜电影| 国内久久精品视频| 亚洲乱码一区二区三区| 国产精品电影院| 99久久精品免费看国产| 欧美日韩国产综合视频在线观看| 亚洲动漫第一页| 久久99九九| 国产午夜精品一区二区三区嫩草| 国产精品一品视频| 日本久久一区二区| 亚洲影院久久精品| 国产原创精品| 久久美女艺术照精彩视频福利播放| 国产又黄又大久久| 91久久精品国产91性色tv| 亚洲一二三级电影| 久久国产精品免费一区| 欧美经典三级视频一区二区三区| 国产jizzjizz一区二区| 欧美色涩在线第一页| 日韩成人午夜电影| 亚洲国产精品综合| 一区二区三区欧美在线观看| 国产在线精品一区二区三区| 久久蜜桃av一区精品变态类天堂 | 天天亚洲美女在线视频| 欧美日韩综合久久| 亚洲欧洲美洲综合色网| 成人3d动漫一区二区三区91| www国产精品av| 成人亚洲精品久久久久软件| 欧美精选在线播放| 久久成人免费日本黄色| 欧美影院一区二区| 青椒成人免费视频| 色综合视频在线观看| 偷拍一区二区三区| 亚洲午夜精品一区二区三区| 亚洲成av人综合在线观看| 日韩av在线电影观看| 一区二区三区免费| 日本成人黄色| 亚洲综合999| 色综合久久久久久久久五月| 有坂深雪av一区二区精品| 欧美国产二区| 一区二区三区四区在线播放 | 日本va欧美va精品| 色天使色偷偷av一区二区| 日韩国产精品久久久| 色婷婷精品久久二区二区蜜臀av | 91精品在线一区二区| 国产福利一区在线观看| 91精品国产aⅴ一区二区| 国产suv精品一区二区883| 日韩精品一区二区三区swag| gogo大胆日本视频一区| 久久久.com| 国产精品9999久久久久仙踪林| 国产精品欧美一区喷水| 久久久久久久久一区| 亚洲制服丝袜一区| 中文字幕一区二区三区乱码| 蜜桃一区二区三区四区| 欧美人妇做爰xxxⅹ性高电影| 国产麻豆午夜三级精品| 日韩丝袜美女视频| 99久久综合99久久综合网站| 国产日韩欧美精品电影三级在线| 国产精品一区二区三区在线| 亚洲人成亚洲人成在线观看图片| 日本一区二区免费看| 日韩在线一区二区三区| 老色鬼精品视频在线观看播放| 欧美日韩在线观看一区二区 | 国模无码大尺度一区二区三区| 69精品人人人人| av综合在线播放| 国产精品每日更新在线播放网址 | 一区二区三区免费在线观看| 亚洲一区二区三区在线观看视频| 麻豆精品国产传媒mv男同| 欧美一级免费观看| 91嫩草免费看| 一区二区视频在线看| 日本精品一区二区三区四区的功能| 国模套图日韩精品一区二区 | 成人av网在线| 国产精品每日更新在线播放网址| 奇米影视首页 狠狠色丁香婷婷久久综合 | 欧美成人a视频| 国产精品久久久久免费| 亚洲一级二级在线| 欧美亚洲一区二区三区四区| 成人黄色av网站在线| 亚洲欧洲av在线| 亚洲欧洲免费无码| 国产精品一区二区久久不卡| 国产三级精品三级| 少妇特黄a一区二区三区| 国内欧美视频一区二区 | 一区二区三区在线免费观看| 欧洲亚洲国产日韩| 99久久久久久| 一区二区三区日韩在线观看| 欧美日韩国产小视频在线观看| 成人av集中营| 亚洲日本中文字幕区| 欧美性极品少妇| 91在线观看免费视频| 亚洲一区二区欧美| 欧美一区二区三区小说| 国产欧美精品一区二区三区| 日韩福利视频导航| 欧美精品一区二区久久久| 欧美三级网色| 国产河南妇女毛片精品久久久 | 精品国产自在久精品国产| 久久久精品国产一区二区三区| 美国十次了思思久久精品导航| 久久久久9999亚洲精品| 一区二区高清视频| 9l国产精品久久久久麻豆| 亚洲一区二区在线免费观看视频 | 亚洲图片在线观看| 波多野结衣91| 亚洲高清中文字幕| 精品福利一区二区三区免费视频| 日韩理论片在线观看| 成人一道本在线| 一区二区三区色| 日韩欧美在线综合网| 欧美日韩免费高清| 国产a久久麻豆| 亚洲综合偷拍欧美一区色| 日韩精品中文字幕一区二区三区 | 国产在线日韩欧美| 亚洲人成精品久久久久久| 69久久99精品久久久久婷婷| 欧美久久在线| 成人性生交大片免费| 亚洲国产cao| 国产人妖乱国产精品人妖| 欧美撒尿777hd撒尿| 美女三级99|