对无效的ZIP代码引发异常或使用方法进行验证
本文关键字:使用方法 验证 异常 无效 ZIP 代码 | 更新日期: 2023-09-27 18:20:26
我有一个应用程序,它从用户那里获取一个邮政编码,该邮政编码可能对所选状态有效,也可能无效。我认为邮政编码无效的情况是一个罕见的问题,它实际上只会由拼写错误引起。
相关的SQL表是Quote
和Address
。保存一个引号是在一个数据库调用中完成的,两个表的所有参数都提供给存储过程。
目前,在ZIP代码无效的情况下,存储过程中会引发一个异常,在数据层的C#中捕获,并抛出一个自定义InvalidZipCodeException
。然后在UI层捕获自定义异常,并将错误通知给用户。我最初这样设计是为了避免每次保存报价时都需要额外的数据库调用来检查邮政编码的有效性。
我最近读了一些关于数据验证的材料,意识到我在这里使用异常来控制逻辑流,这通常是不受欢迎的。在我看来,当绝大多数情况都涉及有效数据时,只为验证邮政编码而单独调用数据库似乎很愚蠢。我想要一些更有教育意义的意见来判断我的设计在这个特定的案例中是否糟糕。
正如JohnBevan在评论中所建议的,如果(1)它已经正常工作,并且(2)它与应用程序的其他部分的验证方式一致,那么就不值得重新设计它。虽然目前认为控制逻辑流(有例外)是一种糟糕的做法,但与其他任何事情一样,这是一种判断。
你提到每5位数字都不是有效的邮政编码。。。我想您有一个表,其中存储了一个要验证的映射。如果您最终更改了验证,只需将其存储为字典并在客户端对其进行验证即可。对我来说,在这种情况下,我会说,"如果它没有坏,就不要修"。