这有点是设计问题。我正在使用装饰器模式来处理横切关注点。这些问题之一是验证。我看到的大多数示例都执行以下操作:
IAccount account = new AccountValidator(new Account());
account.Deposit();
验证器的实现类似于:
if (!IsValid)
throw new NotValidException();
过于简单化,但希望您能理解。
我给人的印象是这是一种不好的做法(我可能错了,这实际上是我的问题的核心-这是不好的做法吗?)这种情况并不是一个例外。这是一个非常典型且可以理解的用户输入错误。
但是,我知道如何避免这种情况的唯一方法是设计我的所有服务方法,以返回某种包含响应数据的标准化对象。因此,例如account.Deposit()返回一个IResponse,它由许多可能的类实现,例如NotValidResponse:IResponse ...
有什么想法吗?
异常不应用于控制数据流;它们应在特殊情况下使用。我建议您返回您描述的某种Result对象,或者返回布尔值,否则返回。您不应该使用异常来确定应用程序的行为:对于必须维护您的代码的其他程序员而言,异常是昂贵且不直观的。
我强烈推荐埃里普·利珀特(Erip Lippert)关于这个主题的不朽词汇:http : //blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句