gpt4 book ai didi

java - 记录异常并抛出新异常 - 它是反模式吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:26 25 4
gpt4 key购买 nike

如果我们捕获异常然后抛出异常,但不是同一类型(仅基于第一个)是否仍然是反模式记录第一个?

简单的例子:

    } catch (CloneNotSupportedException e) {
log.warn(e, e.getMessage());
throw new InternalError(e.getMessage());
}

最佳答案

捕获exception,创建日志消息并抛出新的exception 根本不是反模式。

通常,这种“模式”在您进行跨越特定系统边界的交互/通信时发挥作用,例如两层、模块或组件之间的通信。例如,这可以是客户端服务器交互、应用层与持久层交互或模块 x 调用模块 y 的服务。

让我们仔细看看模式的 Action 。

记录异常?您希望在异常发生的地方记录异常。这并不意味着您必须在它发生的地方记录它,但至少在您的上下文中。另外,请考虑您的日志记录配置。您可能有包、组件、系统...相关的配置,并且您希望确保在正确的日志中看到异常。

抛出新异常?通常,新异常是旧异常的抽象。这很有用,因为方法调用者不必处理很多不同的异常。此外,您不希望调用者始终详细了解上下文中发生的情况,因此使用新的异常允许您隐藏信息。

捕获异常?显然,这是执行其他操作所必需的。

关于java - 记录异常并抛出新异常 - 它是反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443560/

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