gpt4 book ai didi

java - 尝试/多接 vs 单接

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:59 24 4
gpt4 key购买 nike

在 Eclipse 中添加 try/catch block 时,它让我可以选择“Surround with try/multi-catch”或“Surround with try/catch”。

这是 try/multi-catch:

try {
save.load(new FileInputStream(file.getAbsolutePath()));
}
catch (FileNotFoundException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

这是单个 try/catch:

try {
save.load(new FileInputStream(file.getAbsolutePath()));
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

使用其中一种有什么好处/影响?如果我是正确的,第一个示例将在抛出任何一个异常时执行 catch block 并生成相同的 CATCH,而第二个示例将根据异常抛出一个 catch,同时启用单独的 catch block 。

还有什么我应该知道的吗?我以前从未使用过它们,不知道它们是否值得使用。

最佳答案

tl;dr Mutlicatch 单独处理事情,多个 catch block 更灵活,操作更好。这两种技术可以结合使用。

如果您有一个可以抛出许多不同异常类型的 try 语句,您将需要多个 catch block 。它的代码有点多,但提供了更大的灵 active 。

例如,如果使用套接字,SocketException 可能只会被重新连接和/或错误消息捕获(因为像无意中断开电缆这样简单的事情可能会导致这种情况)

如果捕获到空指针异常(尽管它未被检查),您将要写入日志并紧急着陆在这里,尽可能地清理,并可能回溯代码。

此外,这可以进一步分割,其中不同类型的“常见”异常可能会导致采取不同的操作(例如连接丢失与名称未解析对第一次连接的最终用户有不同的影响尝试)和不同的“重”异常也以不同的方式处理。

虽然您可以有一个(多个异常类型)catch block ,但它会单独对所有异常采取类似的操作(以与基于电缆被拔出的条件相同的方式向用户呈现空指针异常)或require if e instanceof FooException block 会降低可读性。

您还可以将两者结合起来,将所有“常见”异常捕获到重试和友好消息中,将所有严重异常捕获到强制清理和关闭中

您不希望跳闸电缆的堆栈跟踪,也不希望清除丢失的对象。

关于java - 尝试/多接 vs 单接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635545/

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