gpt4 book ai didi

language-agnostic - 具有许多不同类型错误的业务组件

转载 作者:行者123 更新时间:2023-12-03 07:47:03 24 4
gpt4 key购买 nike

这只是一个一般的设计问题。如果您正在开发一个业务组件或服务(例如,一个对象/服务公开了一个相对简单的接口(interface)来处理帐单事务),有哪些处理业务相关错误的好方法?

假设组件/服务必须与几个不同的外部 Web 服务集成,这些服务都报告不同的错误,并且还必须为您做一些数据库工作。有许多不同的事情可能会出错,无论是网络/数据库方面还是业务规则方面。 try catch 组件中所有类型的错误并使用错误代码方案将它们报告给调用者会更好,还是尝试将所有错误包装成各种类型的异常并将它们抛给调用者会更好。

这似乎是一场斗争,因为使用异常处理业务规则检查会变得很尴尬,而且我已经阅读了几个地方以避免使用异常来控制“非异常”或业务逻辑流。我觉得“异常”通常是一个有争议的术语,试图将不同的案例定义为“异常”与“非异常”会变得很棘手。 (例如,如果您的业务逻辑检查支出限制、年龄限制等)。同时,使用错误代码方案也很尴尬,因为调用者可能会选择忽略错误代码。

任何提示或引用将不胜感激!

最佳答案

我会选择错误代码方案,因为您说“许多不同的事情都可能出错”。您可能希望有一个返回错误对象列表的方案,其中错误将封装代码、解释、原始数据等。

异常只能说明一件事是错误的,它应该具有“异常”性质,而不是普通问题。

或者可能是一种混合,其中您抛出一个异常,该异常具有一个错误对象列表作为私有(private)数据成员和一个允许您迭代错误的访问方法。

关于language-agnostic - 具有许多不同类型错误的业务组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1359775/

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