Java POJO是否应该具有字段验证并在setter方法中引发异常?
假设我们有数十个java POJO,它们代表我的领域,也就是说,我在系统中的数据作为对象在系统的不同层之间流动。系统可以是 Web 应用程序,也可以是简单的桌面应用程序。域由什么组成并不重要。
在设计我的系统时,我对应该将任何验证逻辑放在哪里感到困惑。我的POJO(域对象)表示我的数据,这些对象中的一些字段必须遵守某些标准,但是如果我在我的setter-method中放置了很多验证逻辑,那么告诉调用客户端的唯一方法是抛出一个异常。如果我不希望系统崩溃,则异常必须是必须捕获和处理的已检查异常。这样做的结果是,每次我使用 setter-methods(甚至构造函数)创建新对象时,我都会重新引发该异常或使用 try-catch 块。被迫在许多 setter-method 上使用 try-catch 是不对的。
所以问题是我应该把我的验证逻辑放在哪里,这样我就不会用大量的样板试听块和重写来混淆我的代码。欢迎最优秀的 JAVA 字节食客加入讨论。
我已经研究和谷歌搜索,但没有找到任何关于这个话题的具体讨论,所以我以极大的热情等待着更深入地了解事情真正应该如何做。