在我的应用程序中,我正在创建一系列验证类来检查,例如,用户输入的类的 Name 属性(来自 WinForm)不超过数据库中 varchar() 的大小。
目前,如果 Name 字段太大,验证代码将抛出自定义异常。(自定义异常,当被 UI 捕获时,将在 MessageBox 中显示自定义异常消息,而不是我的常规异常的通用错误表单。)验证类在应用程序的类库中,并且范围为 Friend。流程如下所示:
- WinForms 使用的 DLL 的公共服务层 --(calls)--> Friend Validation Layer
- 如果验证成功,则 WinForms 使用的 DLL 的公共服务层 --(调用)--> Friend 数据访问层。
简化示例:
Public Shared Sub CreateCustomer(cust as Customer)
Validation.Customer.ValidateForCreate(cust) ' scoped as Friend
Dal.Customer.Create(cust) ' scoped as Friend
End Sub
当验证失败时,让验证层将自定义异常抛出回 UI 是否是“智能”设计?
仅从验证层返回 True/False 以及失败的字符串消息,并让服务层处理抛出异常,这是更好的设计吗?
仅从验证层返回 True/False 并让服务层将 True/False 冒泡到 UI 以及失败的字符串消息是更好的设计吗?
我试图保持面向对象的方法。我的观点是抛出自定义异常不会违反 OOP 原则,但我想要其他意见:)