gpt4 book ai didi

java - 如何创建可以抛出任何异常的通用函数?

转载 作者:行者123 更新时间:2023-12-03 01:24:03 24 4
gpt4 key购买 nike

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

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”方法具有相同的处理逻辑,但每个类都有 1 个不同的异常:A 类的 A1Exception 和 B 类的 B1Exception

我的问题是:我如何编写基本类,它将用通用逻辑实现“doCheck”+接受在某些情况下应该抛出的异常类?A 和 B 应该扩展这个类。

最佳答案

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

public abstract class Checkable<X extends Exception> {

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<A1Exception> {

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

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

}

Ideone Demo

关于java - 如何创建可以抛出任何异常的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41760115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com