gpt4 book ai didi

java - 捕获并重新抛出完全相同的异常有什么意义吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:09:45 24 4
gpt4 key购买 nike

最近,我看到很多(商业)代码抛出和捕获完全相同的异常,类似于下面的代码:

public class Foo {
public void bar() throws AnException {
// do something (1)
try {
// do something (2) -- able to throw AnException
} catch (AnException ex) {
throw ex;
}
// do something (3)
}
}

对比一下:

public class Foo {
public void bar() throws AnException {
// do something (1)
// do something (2) -- able to throw AnException
// do something (3)
}
}

前者在行为、语义或其他方面是否真的完成了任何事情?它会对代码性能(时间和空间)产生任何影响还是有助于提高可读性?

附言这个问题与this question非常不同.

编辑:前者中的 catch block 除了重新抛出捕获的异常外没有做任何其他事情。

最佳答案

这违反了基本规则:

The code should catch only the exceptions that it knows how to handle.

Oracle 的指南建议每次抛出异常时,您都应该为捕获异常的代码提供一些有用的信息(请参阅 Effective Java Exceptions 的第 3 页)。捕获异常只是为了重新抛出它没有任何实际意义,因为没有为调用链中它上面的代码添加额外的信息,也没有由方法本身提取的信息。

关于java - 捕获并重新抛出完全相同的异常有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419928/

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