pen*_*ake 35 c# java validation exception
是否建议从验证方法中抛出异常,例如:
ValidateDates();
ValidateCargoDetails();
Run Code Online (Sandbox Code Playgroud)
除此之外:是否经常使用强大的验证设计模式?
And*_*rew 29
我建议返回一个包含ValidationFailures的ValidationResult对象.您不应该将异常用作逻辑编码的一部分.例外是例外
Ade*_*ari 15
我通常visitor pattern用于验证输入; 将所有错误累积到列表或其他内容以显示用户.逻辑就像是,检查列表中的验证错误,如果找到,通知用户,否则很好.
IMO,验证错误并不是特例,因此它不应该像一个人那样处理.
byt*_*dev 10
我会说这完全取决于你在做什么/如何进行验证.但是在一天结束时,开发人员总是可以选择忽略返回的结果(这是他们的问题),他们不能忽略异常而不编写显式代码来执行此操作.
不得使用抛出异常来控制应用程序的流程。顾名思义,它发生在特殊情况下,而验证通常会失败。它们也很昂贵并且会影响性能。
我会返回一个布尔值和一个字符串 for reason。
在很大程度上取决于异常验证失败对正确性的重要性。
如果您的验证失败发生时罕见且严重或致命,我会使用异常甚至断言错误。大多数解析器使用异常,这些表示无法继续处理。
如果您的验证失败在正常操作下预期失败并且不表明您无法继续处理,我建议使用访问者模式或返回问题列表(可以为空)