在无效的邮政编码上抛出异常或用方法验证?

时间:2015-11-02 19:32:33

标签: c# validation exception

我有一个应用程序从用户那里获取一个邮政编码,该邮政编码可能对选定的州有效,也可能没有。我认为无效邮政编码的情况是一个罕见的问题,实际上只会产生错字。

相关的SQL表格为QuoteAddress。保存报价是在一次数据库调用中完成的,两个表的所有参数都提供给存储过程。

目前,如果邮政编码无效,则会在存储过程中引发异常,在数据层的C#中捕获,并抛出自定义InvalidZipCodeException。然后在UI层捕获自定义异常,并通知用户错误。我最初设计它是为了避免额外的数据库调用,以便在每次保存报价时检查邮政编码的有效性。

我最近阅读了一些关于数据验证的材料,并意识到我在这里使用异常来控制逻辑流程,这通常是不受欢迎的。当绝大多数情况涉及有效数据时,单独进行数据库调用以验证邮政编码似乎很愚蠢。在这个具体案例中,我是否喜欢一些有关我的设计是否很差的受过教育的意见。

1 个答案:

答案 0 :(得分:0)

正如JohnLBevan在评论中所说,如果(1)它已经正常工作并且(2)它与应用程序其余部分的验证方式一致,那么它真的不值得重做。虽然目前认为用异常控制逻辑流程是不好的做法,就像其他任何事情一样,它是一个判断调用。

您提到每5位数字都不是有效的邮政编码...我想您有一张存储地图的表格可以验证。如果您最终更改验证,只需将其存储为字典并在客户端验证它。对我来说,我会说,"如果它没有破坏,就不要修理它"在这种情况下。