[英]How to create general function which can throw any exception?
我有兩個類(結構示例):
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.