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

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

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

概述

平時開發(fā)中,我們經常會處理一些不得不處理的檢查性異常以及一些無關緊要的一場,例如:

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

即便只是想忽略掉異常也得寫成:

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

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

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

轉換為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的實現(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;
? ? }
}

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

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

相關文章

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

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

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

    xxl-job如何濫用netty導致的問題及解決方案

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

    Java FileDescriptor總結_動力節(jié)點Java學院整理

    FileDescriptor 是“文件描述符”。可以被用來表示開放文件、開放套接字等。接下來通過本文給大家分享Java FileDescriptor總結,感興趣的朋友一起學習吧
    2017-05-05
  • 使用maven對springboot項目進行瘦身分離jar的多種處理方案

    使用maven對springboot項目進行瘦身分離jar的多種處理方案

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

    SpringBoot使用SchedulingConfigurer實現(xiàn)多個定時任務多機器部署問題(推薦)

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

    Java原子類中的AtomicInteger類詳解

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

    SpringBoot使用Swagger范例講解

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

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

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

    Java數(shù)據(jù)結構之對象的比較

    比較對象是面向對象編程語言的一個基本特征,下面這篇文章主要給大家介紹了關于Java數(shù)據(jù)結構之對象的比較,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • Springboot事務失效的幾種情況解讀

    Springboot事務失效的幾種情況解讀

    這篇文章主要介紹了Springboot事務失效的幾種情況解讀,因為Spring AOP默認使用動態(tài)代理,會給被代理的類生成一個代理類,事務相關的操作都通過代理來完成,使用內部方法調用時,使用的是實例調用,沒有通過代理類調用方法,因此事務不會檢測到失敗,需要的朋友可以參考下
    2023-10-10

最新評論