情况就是这样。假设我有一个收集名字、姓氏和电子邮件地址的表单,所有字段都是必需的。
通常,我只检查一个字段,如果没有设置,那么回送一个错误。这一切都很好,但我想更优雅地处理事情。我一直在读关于扔/试/接球的文章,我知道如何使这些动作有效,但我不确定什么时候应该使用这些。
让我更具体地说明我想做什么。
因此,我再次有三个字段:
我获取这些字段并通过验证器运行它们。验证器返回一个数组,其中字段作为键和错误消息(如果有)。我想循环遍历数组,并以某种方式将这些错误设置为某种全局错误数组。此数组将由控制器读取,该控制器将为显示错误做准备。讲得通?
我认为抛出/捕捉/尝试可以做到这一点,但一次只能抛出一个错误。我想要做的是立即向用户显示所有错误。
我知道我可能离基地很远,但这就是我寻求建议的原因。在这种情况下,最佳做法是什么?
发布于 2015-04-03 00:05:39
我看到的一个(可能有点极端)的经验法则是,您应该只在程序退出时才使用异常。这是因为如果您没有捕捉到异常,就会发生这种情况;但它也强调了不应将异常用于“如常”、流控制和情况的思想。
正如您已经发现的,一旦抛出一个异常,您就会被逐出所做的任何操作,因此您不能同时创建多个异常。因此,您最好的验证方法就是构建一个错误数组--它不需要是全局的,只需从验证方法中返回,或者作为Validator对象的成员返回。
接下来的消息发生了什么,部分取决于个人风格,部分取决于代码的结构。您可能只想将它们直接传递到模板,只有在没有显示的情况下才会继续。但是您可能会发现,这需要在多个地方签入“返回的错误,不要继续”,在这种情况下,抛出一个包含在其中的消息的异常可能更有意义,因为您知道在那里和捕获之间不会运行任何代码。
https://stackoverflow.com/questions/29424317
复制相似问题