当前位置:  开发笔记 > 编程语言 > 正文

如何创建可抛出任何异常的一般函数?

如何解决《如何创建可抛出任何异常的一般函数?》经验,为你挑选了1个好方法。

我有两个类(结构示例):

public class A {
    protected void doCheck(stuff) throw CommonException, A1Exception{
        if(stuff==1){
            throw new A1Exception(stuff);
        }
        throw new CommonException(stuff);
    }
    public void invokeAstuff(stuff) throw CommonException, A1Exception{
        doCheck(stuff);
    }
}
public class B {
    protected void doCheck(stuff) throw CommonException, B1Exception{
        if(stuff==1){
            throw new B1Exception(stuff);
        }
        throw new CommonException(stuff);
    }
    public void invokeBstuff(stuff, otherStuff) throw CommonException, B1Exception{
        doCheck(stuff);
    }
}

"doCheck"方法具有相同的处理内容的逻辑,但是每个类都抛出一个不同的异常:A类的A1Exception和B类的B1Exception

我的问题是:如何编写将使用通用逻辑实现"doCheck"的基本类+在某些条件下应该抛出的异常类?A和B应该扩展这个类.



1> 4castle..:

您可以创建一个通用抽象类,将异常声明为泛型类型,然后创建一个必须在子类中重写的供应商方法.

public abstract class Checkable {

    protected abstract X getException(int stuff);

    protected void doCheck(int stuff) throws CommonException, X {
        if (stuff == 1) {
            throw this.getException(stuff);
        }
        throw new CommonException(stuff);
    }

}

子类看起来像:

public class A extends Checkable {

    @Override
    protected A1Exception getException(int stuff) {
        return new A1Exception(stuff);
    }

    public void invokeStuff(int stuff) {
        doCheck(stuff);
    }

}

Ideone演示

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有