gpt4 book ai didi

java - 出现异常时如何使用接口(interface)将接口(interface)与技术实现分离

转载 作者:行者123 更新时间:2023-12-02 11:22:43 28 4
gpt4 key购买 nike

  1. 我尝试使用 Java 接口(interface)将技术实现和领域逻辑接口(interface)分开。

  2. 由于我也进行测试驱动开发,因此我的实现必须抛出异常,这与技术问题有关。

因为 2.,我还必须在接口(interface)方法声明中添加“抛出”,这与要求 1. 发生冲突。

所以我的问题是,我不想在界面中包含特定于实现的细节,但我想进行测试驱动开发。

解决这个问题的第一个想法是将技术异常转化为领域逻辑异常。

这是唯一的方法还是我错过了什么?是否有经过批准的设计模式来解决此问题或此问题的任何其他解决方案,因为引入大量自定义异常会导致开发开销。

最佳答案

解决此问题的典型方法是捕获实现细节异常类型,并抛出更适合您的特定服务的新异常类型。如果这就是您所说的“将技术异常转换为域逻辑异常”的意思,那么是的,这是正确的方法。

例如,也许您有一个 UserRepository 接口(interface),并且您的实现当前正在使用 SQL 来查找用户。您可以将接口(interface)方法标记为抛出您自己的异常类型(例如UserNotFoundException)。您的实现会捕获任何与 SQL 相关的错误并抛出 UserNotFoundException

这样,如果您将来切换到使用 MongoDb 或其他东西,您的界面将保持完全相同,而您的实现现在必须捕获 MongoDb 引发的异常类型。使用您的界面的代码将继续正常工作,因为它已经知道如何处理 UserNotFoundException,并且这一点没有改变。

请记住将原始异常作为您抛出的新异常的原因包含在内,以免丢失堆栈跟踪。

关于java - 出现异常时如何使用接口(interface)将接口(interface)与技术实现分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806862/

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