我有一项服务,允许用户将动态内容添加到存储库。所以基本上我有一个通用 Document 类,它包含该特定对象的属性列表,具体取决于用户添加的文档类型(例如,发票文档具有发票编号属性,而 wiki 文档具有作者属性,等等上)。
该服务由不同的层组成,有时我有一个类,它必须检查要添加的文档是否符合规则配置器,评估是否提供了所有必需的属性,它们是否都是正确的类型等. 如果这些验证中的任何一个失败,我想抛出一个包含验证状态的自定义异常。
问题是:我的 ValidationException 应该被选中还是不选中?我阅读了很多关于如何决定使用哪种异常的最佳实践。我正在考虑使用 RuntimeException 但在这种情况下,异常不是由编码错误或类似的东西引起的,而只是由用户输入引起的......另一方面,使用检查的异常意味着传播“抛出”语法应用程序的所有上述层以及可能在 90% 的服务方法中使代码的可读性和可维护性大大降低。