在设计系统时,我很困惑应该把验证逻辑放在哪里。我的 POJO(领域对象)代表我的数据,其中一些字段必须符合特定的标准,但如果我在 setter 方法中放置了大量验证逻辑,那么告诉调用客户端的唯一方法就是抛出异常。如果我不想让系统崩溃,那么异常必须是一个已检查的异常,必须被捕获和处理。其结果是每次使用 setter 方法创建新对象(甚至是构造函数)时,我都必须重新抛出异常或使用 try-catch 块。被迫在许多 setter 方法上使用 try-catch 感觉不对劲。
所以问题是我应该把验证逻辑放在哪里,这样我就不会用大量的样板 try-catch 块和重新抛出来弄乱我的代码。欢迎最好的 JAVA 字节吞噬者加入讨论。
我已经研究和搜索过了,但没有找到关于此主题的具体讨论,所以我非常热切地等待深入了解应该如何做的更多内部信息。
hibernate-validator
实现。 - beerbajayIllegalArgumentException
,UnsupportedOperationException
或NPE。这可以防止“垃圾进入 - 垃圾输出”的情况并警告调用者他们正在做错事,而_无需_将代码弄乱异常处理。 - fspinnenhirn