就是这种情况。假设我有一个收集名字,姓氏和电子邮件地址的表单,所有字段都是必需的。
通常我只检查一个字段,如果没有设置,则回显错误。这很好,除了我想要更优雅地处理事情。我一直在阅读关于throw / try / catch的内容,我知道如何使这些工作,但我不确定我什么时候应该使用它们。
让我对我想做的事情稍微具体一点。
所以我又有3个字段:
我接受这些字段并通过验证器运行它们。验证器返回一个数组,其中字段为键,并返回错误消息(如果有)。我想循环遍历数组,并以某种方式将这些错误设置为某种全局错误数组。该阵列将由控制器读取,该控制器将准备错误以供显示。合理?
我假设throw / catch / try可以做到这一点,但我一次只能抛出1个错误。我想做的是立即向用户显示所有错误。
我意识到我可能会离开这里,但这就是我要求建议的原因。在这种情况下,最佳做法是什么?
答案 0 :(得分:0)
我见过的一个(可能是极端的)经验法则是你应该只使用Exceptions,你会对程序退出感到满意。这是因为如果你没有发现异常,那将会发生什么;但它也强调了不应将例外用于“一切照旧”,流量控制,情况的想法。
正如您所发现的那样,只要您抛出异常,就会因为您正在做的任何事情而被抨击,因此您无法同时创建多个异常。因此,验证的最佳选择就是构建一个错误数组 - 它不需要是全局的,只需从validate方法返回它,或者作为Validator对象的成员。
接下来的消息会发生什么,部分取决于个人风格,部分取决于代码的结构。您可能只想将它们直接传递给模板,只有在没有要显示时才继续。但是你可能会发现这需要在多个地方检查“返回错误,不要继续”,在这种情况下抛出包含在其中的消息的单个异常可能更有意义,因为你知道那里和catch之间没有代码会跑。