我的项目中有两层说A& B. A层功能抛出一组例外Ae1,Ae2,Ae3。 B层函数抛出异常Be1,Be2,Be3,Be4。从A层的不同功能调用B层功能。
A层中的函数可以抛出多个异常。同样在B层。
另外,我有一个映射,就像每次从B层函数中获得异常Be1和Be2时,我捕获使用try catch在A层函数定义中的那些异常并将其作为Ae3抛出。类似地,异常Be3被抛出为Ae2,而Be4被抛出为Ae1。
public void function1InLayerB throws Be1, Be2, Be4{
......
}
现在我在做的是:
public void function1InLayerA throws Ae3, Ae1{
try{
function1InLayerB();
} catch(Be1){
throw new Ae3;
} catch(Be2){
throw new Ae3;
} catch(Be4){
throw new Ae1;
}
}
所以,我想通过使用函数或任何其他不同的方法避免这么多试试catch块,并且在A层中具有简单的功能
public void fnuction1InLayerA throws Ae1, A2{
....
new_function(function1InLayerB());
}
是否可以编写这样的通用函数?
注意:Java版本6。
答案 0 :(得分:1)
从Java 7开始,您可以这样做:
try{
function1InLayerB();
} catch(Be1 | Be2){
throw new Ae3;
} catch(Be4){
throw new Ae1;
}
因此,当catch块中发生常见异常时,您可以避免重复。
对于Java 6及更低版本:
try{
function1InLayerB();
}catch(Exception ex){
manageExceptions(ex);
}
创建一个方法来检查异常实例以管理它并抛出所需的异常。
private void manageExceptions(Exception ex){
if(ex instanceOf Be1 || ex instanceOf Be2){
throw new Ae3;
}else if(ex instance of Be4){
throw new Ae1;
}...
else
throw new Exception(ex);
}