我有一个允许用户向存储库添加动态内容的服务。所以基本上我有一个通用的Document类,它包含一个特定对象的属性列表,这取决于用户添加的文档类型(例如。发票文档有一个发票号属性,而wiki文档有一个作者属性,等等)。
服务由不同的层组成,在某些时候,我有一个类必须检查要添加的文档是否符合规则配置器,评估是否提供了所有必需的属性,它们是否都是正确的类型,等等。如果这些验证中的任何一个失败,我想抛出一个包含验证状态的自定义异常。
问题是:我的ValidationException应该被检查还是不检查?我阅读了很多关于如何决定使用哪种异常的最佳实践。我正在考虑使用RuntimeException,但在这种情况下,异常不是由编码错误或类似的东西引起的,而是由用户输入…另一方面,使用检查异常将意味着在应用程序的所有上述层中传播"抛出"语法,并且可能在90%的服务方法中传播"抛出"语法,从而使代码的可读性和可操作性大大降低。
根据建议,我在http://programmers.stackexchange.com上问了这个问题
这是问题的链接,如果有人需要的话。https://softwareengineering.stackexchange.com/questions/252740/checked-vs-unchecked-exception-when-validating-documents-in-this-service