【问题标题】:If Validation methods should return a validation result, why there is ArgumentException class?如果验证方法应该返回验证结果,为什么会有 ArgumentException 类?
【发布时间】:2013-01-09 08:04:23
【问题描述】:

我有点困惑。

MSDN 对 ArgumentException 的说法是:

"当一个参数提供给一个 方法无效。”

所以如果传递给我的方法的参数无效,我会抛出异常。

但我也发现建议返回布尔值加上一个字符串是有原因的。 - 而不是抛出异常。

所以,

问题:当validationg方法参数时,当参数无效时,Validation方法应该什么时候抛出异常,什么时候不应该?

【问题讨论】:

  • “建议返回布尔值加上一个字符串”这将有助于引用您阅读此内容的位置,并附上链接。
  • 你上一个问题和这个问题有什么不同?

标签: c# .net validation exception argumentexception


【解决方案1】:

如果您有一个方法,其目的是验证其参数(例如:这是一个有效的用户名/密码组合),请务必返回一个布尔值(false = 无效)加上一个原因。不要为预期的情况抛出异常(如果不是预期的,为什么要验证?)

如果你有一个“Process”方法,情况就不同了:你必须有有效的参数,所以当它们无效时抛出异常(说明问题)是合理的。

【讨论】:

  • +1 同意。但是,如果您需要返回带有字符串 IMO 的 bool,则应返回一个将 bool 和字符串封装在一起的类。不要使用输出参数,当有人来维护/重构您的代码时,它们只会让人头疼。
  • @nashwan:使用类来封装故障原因的一个优点是,派生类可以包含更多适用于某些类型故障的信息。
猜你喜欢
  • 2016-09-20
  • 1970-01-01
  • 2014-03-01
  • 2011-08-19
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
相关资源
最近更新 更多