服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java使用Catcher捕获异常怎么实现

Java使用Catcher捕获异常怎么实现

2023-12-01 01:11未知服务器之家 Java教程

本篇文章和大家了解一下Java使用Catcher捕获异常怎么实现。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 概述 平时开发中,我们经常会处理一些不得不处理的检查性异常以及一些无关紧要的一场,例如:

本篇文章和大家了解一下Java使用Catcher捕获异常怎么实现。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

概述

平时开发中,我们经常会处理一些不得不处理的检查性异常以及一些无关紧要的一场,例如:

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

即便只是想忽略掉异常也得写成:

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

实际上,这类代码我们通常只关心三个部分:1. 执行的动作;2. 和动作关联的异常;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的实现

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;
    }
}

注意:本文所展示的代码仅用于娱乐用途,如有启发,纯属巧合,请勿用在实际生产环境

以上就是Java使用Catcher捕获异常怎么实现的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注***行业资讯频道哦!

延伸 · 阅读

精彩推荐