gpt4 book ai didi

java - 我可以简化这三个 catch block 吗?

转载 作者:行者123 更新时间:2023-11-29 05:51:59 25 4
gpt4 key购买 nike

我能以某种方式将这段代码放在一个方法中吗

        if (!printStackTrace_printed) {
ex.printStackTrace();
printStackTrace_printed=true;
}
logStoreException(ex);
throw new Exception(ex.getMessage());

并在每个 catch block 中调用它并向其传递正确的参数 exnpe

    catch (RationalTestException ex) {
if (!printStackTrace_printed) {
ex.printStackTrace();
printStackTrace_printed=true;
}
logStoreException(ex);
throw new Exception(ex.getMessage());

}
catch (NullPointerException npe) {
if (!printStackTrace_printed) {
npe.printStackTrace();
printStackTrace_printed=true;
}
logStoreException(npe);
throw new Exception(npe.getMessage());

}
catch (Exception ex) {
if (!printStackTrace_printed) {
ex.printStackTrace();
printStackTrace_printed=true;
}
logStoreException(ex);
throw new Exception(ex.getMessage());
}

最佳答案

由于您在最后一个 catch 中捕获了 Exception,并且所有 catch block 都是相同的,因此您可以完全删除其他两个 catch block 而不影响程序。

没有区别的原因是 NullPointerExceptionException 的子类,所以捕获 Exception 也会捕获 NullPointerException 以及 try block 中抛出的任何其他异常。


请注意,一般来说,捕获 Exception 被认为是一种反模式,除非是在服务器调用的最顶层。

关于java - 我可以简化这三个 catch block 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13556706/

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