无效用户输入是否是抛出异常的正当理由?

Pau*_*aul 9 .net architecture exception-handling

根据.NET Framework一般参考:错误提升和处理指南在"正常"操作期间不应抛出异常.无效的用户输入到Web表单,比如用户输入重复的名称,被认为是正常的?!重要!!:我确信我们几乎都对此有意见,请提供可靠来源的参考.

编辑:

更多背景:我正在质疑我正在阅读的一本书提倡的模型验证方法.本书建议您在提供无效数据时从存储库中抛出自定义异常.现在,在我看来,这违反了MS指南,因为您使用异常作为流控制...除非在"正常"操作之外考虑接收无效数据.我只是想看看是否有来自可靠来源的任何进一步指导来解决这个问题.

另一个编辑:

好吧两年半之后,我正在将此存储库移动到WCF服务,并且在此方法中使用异常被证明是个坏主意.那好吧.

Mic*_*urr 13

一般来说,无效或格式错误的输入不被视为"例外",应使用异常以外的其他方式处理.但请注意,这是一个指导原则 - 可能存在使用异常来处理问题会导致更好的代码的情况.


小智 6

无效的用户输入是EXPECTED情况.你希望它经常像有效输入一样发生​​.这样,抛出异常可能太多了.

另一方面,如果您出于某些原因喜欢此代码样式,则可以抛出自定义异常并在内部捕获它们.但是无效的用户输入不应该抛出那种会完全停止应用程序的异常.