gpt4 book ai didi

java - java中代码层的异常处理

转载 作者:行者123 更新时间:2023-11-30 07:07:01 25 4
gpt4 key购买 nike

我的项目中有两层,即 A 和 B。A 层函数抛出一组异常 Ae1、Ae2、Ae3。 B 层函数抛出异常 Be1、Be2、Be3、Be4。 B 层函数由 A 层中的不同函数调用。

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

所以,我想通过使用函数或任何其他不同的方法来避免这么多的 try catch block ,并在 A 层中使用简单的函数

public void fnuction1InLayerA throws Ae1, A2{
....
new_function(function1InLayerB());
}

可以写一个这样的通用函数吗?

注意:Java 版本 6。

最佳答案

从 Java 7 开始,您可以执行以下操作:

    try{
function1InLayerB();
} catch(Be1 | Be2){
throw new Ae3;
} catch(Be4){
throw new Ae1;
}

因此,当常见异常发生在 catch block 中时,您可以避免重复。

对于 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);

}

关于java - java中代码层的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932830/

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