抛出业务异常

时间:2016-09-02 07:46:01

标签: c# exception design-patterns exception-handling

要调用支付网关等外部服务,我创建了一个提供程序程序集,例如:MyCompany.Providers.Braintree,它封装了与进行服务调用相关的所有逻辑。它基本上作为通过工作,它包含在自己的程序集中。

让我们说提供商有一个" DoPayment"在网关上调用服务的方法,该服务返回一些状态以及正文消息:

  • 代码111 - >付款成功
  • 代码222 - >资金不足
  • 代码333 - >未知的收款人

提供者是否应该提供"业务"付款未成功完成时的异常,或者服务基本上是否返回包裹网关返回的类型?

我一直选择不在这种情况下抛出异常,因为基本上这不是异常情况 - 网关成功处理了请求(即使付款未完成也处理了请求)这个过程是Microsoft&# 39;的推荐:

Creating and Throwing Exceptions (C# Programming Guide)

  

不应将异常用于更改程序的流程,作为普通执行的一部分。例外情况只应用于报告和处理错误情况。

Martin Fowler对此事也有意见,Replacing Throwing Exceptions with Notification in Validations

  

异常表示超出所讨论代码的预期行为范围的内容

但它与输入验证有关。

你们做什么?

0 个答案:

没有答案