亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java使用Catcher捕獲異常的實(shí)現(xiàn)

 更新時(shí)間:2023年05月12日 15:45:32   作者:樂(lè)征skyline  
本文主要介紹了Java使用Catcher捕獲異常的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

概述

平時(shí)開(kāi)發(fā)中,我們經(jīng)常會(huì)處理一些不得不處理的檢查性異常以及一些無(wú)關(guān)緊要的一場(chǎng),例如:

try {
    doSomething();
} catch (Exception e) {
    e.printStackTrace();
    //or Logger.d("error:" + e.getMessage());
}

即便只是想忽略掉異常也得寫(xiě)成:

try {
    doSomething();
} catch (Exception ignore) {
}

實(shí)際上,這類(lèi)代碼我們通常只關(guān)心三個(gè)部分:1. 執(zhí)行的動(dòng)作;2. 和動(dòng)作關(guān)聯(lián)的異常;3. 異常的處理方式。想象中的偽代碼可能是這樣的:

capture IOException?
? ? from () -> {
? ? }
? ? to handleIOException

轉(zhuǎn)換為Java代碼,就是:

Catcher.capture(IllegalAccessException.class)
        .from(() -> {
            //do something
            throw new Exception("kdsfkj");
        }).to(Main::onFailed);
//或
Catcher.capture(IllegalAccessException.class, IOException.class)
        .from(() -> {
            //do something
            throw new Exception("kdsfkj");
        })
        .to(e -> {
            //handle exception
        });

Catcher的實(shí)現(xiàn)

public class Catcher {
? ? List<Class<?>> classes = new LinkedList<>();
? ? private Action action;
? ? private ?<T extends Exception> Catcher(List<Class<? extends T>> list) {
? ? ? ? classes.addAll(list);
? ? }
? ? @SafeVarargs
? ? public static <T extends Exception> Catcher capture(Class<? extends T>... classes){
? ? ? ? List<Class<? extends T>> list = Arrays.asList(classes);
? ? ? ? return new Catcher(list);
? ? }
? ? public Catcher from(Action action){
? ? ? ? this.action = action;
? ? ? ? return this;
? ? }
? ? public void to(Consumer<Exception> exceptionConsumer){
? ? ? ? try {
? ? ? ? ? ? action.run();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? for(Class<?> mClass : classes){
? ? ? ? ? ? ? ? if(mClass.isInstance(e)){
? ? ? ? ? ? ? ? ? ? exceptionConsumer.accept(e);
? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? throw new IllegalStateException(e);
? ? ? ? }
? ? }
? ? public interface Action{
? ? ? ? void run() throws Exception;
? ? }
}

注意:本文所展示的代碼僅用于娛樂(lè)用途,如有啟發(fā),純屬巧合,請(qǐng)勿用在實(shí)際生產(chǎn)環(huán)境

到此這篇關(guān)于Java使用Catcher捕獲異常的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java Catcher捕獲異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java女裝商城系統(tǒng)的實(shí)現(xiàn)流程

    Java女裝商城系統(tǒng)的實(shí)現(xiàn)流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)女裝商城系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • xxl-job如何濫用netty導(dǎo)致的問(wèn)題及解決方案

    xxl-job如何濫用netty導(dǎo)致的問(wèn)題及解決方案

    本篇文章講解xxl-job作為一款分布式任務(wù)調(diào)度系統(tǒng)是如何濫用netty的,導(dǎo)致了怎樣的后果以及如何修改源碼解決這些問(wèn)題,netty作為一種高性能的網(wǎng)絡(luò)編程框架,十分受大家喜愛(ài),今天就xxl-job濫用netty這一問(wèn)題給大家詳細(xì)下,感興趣的朋友一起看看吧
    2021-05-05
  • Java FileDescriptor總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java FileDescriptor總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    FileDescriptor 是“文件描述符”??梢员挥脕?lái)表示開(kāi)放文件、開(kāi)放套接字等。接下來(lái)通過(guò)本文給大家分享Java FileDescriptor總結(jié),感興趣的朋友一起學(xué)習(xí)吧
    2017-05-05
  • 使用maven對(duì)springboot項(xiàng)目進(jìn)行瘦身分離jar的多種處理方案

    使用maven對(duì)springboot項(xiàng)目進(jìn)行瘦身分離jar的多種處理方案

    springboot項(xiàng)目打包一般我們都使用它自帶的spring-boot-maven-plugin插件,這個(gè)插件默認(rèn)情況下,會(huì)把所有的依賴(lài)包全部壓縮到一個(gè)jar里面,今天給大家分享幾種方案來(lái)如何減小我們的打包文件,需要的朋友可以參考下
    2024-02-02
  • SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)多機(jī)器部署問(wèn)題(推薦)

    SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)多機(jī)器部署問(wèn)題(推薦)

    這篇文章主要介紹了SpringBoot使用SchedulingConfigurer實(shí)現(xiàn)多個(gè)定時(shí)任務(wù)多機(jī)器部署問(wèn)題,定時(shí)任務(wù)多機(jī)器部署解決方案,方式一拆分,單獨(dú)拆分出來(lái),單獨(dú)跑一個(gè)應(yīng)用,方式二是基于aop攔截處理(搶占執(zhí)行),只要有一個(gè)執(zhí)行,其它都不執(zhí)行,需要的朋友可以參考下
    2023-01-01
  • Java原子類(lèi)中的AtomicInteger類(lèi)詳解

    Java原子類(lèi)中的AtomicInteger類(lèi)詳解

    這篇文章主要介紹了Java原子類(lèi)中的AtomicInteger類(lèi)詳解,原子類(lèi)可以保證對(duì)"變量"操作的,原子性、有序性、可見(jiàn)性,我們可以通過(guò)AtomicInteger類(lèi),來(lái)看看它們是怎樣工作的,需要的朋友可以參考下
    2023-10-10
  • SpringBoot使用Swagger范例講解

    SpringBoot使用Swagger范例講解

    Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 Restful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步
    2022-07-07
  • Java基于Guava Retrying實(shí)現(xiàn)重試功能

    Java基于Guava Retrying實(shí)現(xiàn)重試功能

    這篇文章主要介紹了Java基于Guava Retrying實(shí)現(xiàn)重試功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較

    Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較

    比較對(duì)象是面向?qū)ο缶幊陶Z(yǔ)言的一個(gè)基本特征,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之對(duì)象的比較,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Springboot事務(wù)失效的幾種情況解讀

    Springboot事務(wù)失效的幾種情況解讀

    這篇文章主要介紹了Springboot事務(wù)失效的幾種情況解讀,因?yàn)镾pring AOP默認(rèn)使用動(dòng)態(tài)代理,會(huì)給被代理的類(lèi)生成一個(gè)代理類(lèi),事務(wù)相關(guān)的操作都通過(guò)代理來(lái)完成,使用內(nèi)部方法調(diào)用時(shí),使用的是實(shí)例調(diào)用,沒(méi)有通過(guò)代理類(lèi)調(diào)用方法,因此事務(wù)不會(huì)檢測(cè)到失敗,需要的朋友可以參考下
    2023-10-10

最新評(píng)論