PHP异常、错误和给予用户反馈


PHP Exceptions, Errors and Giving User Feedback

情况就是这样。假设我有一个表格,它收集了名字、姓氏和电子邮件地址,所有字段都是必填的。

通常,我只会检查一个字段,如果没有设置,则返回一个错误。这很好,但我想更优雅地处理事情。我一直在读关于投掷/尝试/接球的文章,我知道如何让这些东西发挥作用,但我不确定什么时候应该使用这些。

让我更具体一点我想做什么。

所以我有3个字段:

  • 名字
  • 姓氏
  • 电子邮件

我获取这些字段并通过验证器运行它们。验证器返回一个以字段为关键字的数组和一条错误消息(如果有)。我想循环遍历数组,并以某种方式将这些错误设置为某种全局错误数组。该阵列将由控制器读取,该控制器将准备显示错误。有道理吗?

我以为投掷/接球/尝试可以做到这一点,但我一次只能投出1个错误。我想做的是一次向用户显示所有错误。

我意识到我可能离基地很远,但这就是我寻求建议的原因。在这种情况下,最佳做法是什么?

我看到的一条(可能有点极端)经验法则是,您应该只在对程序退出感到满意的情况下使用Exceptions。这是部分原因,因为如果你没有捕捉到异常,就会发生这种情况;但它也强调了一个观点,即异常不应用于"照常营业"、流量控制等情况。

正如你所发现的,一旦你抛出一个异常,你就会被你所做的一切所淘汰,所以你不能同时创建多个异常。因此,验证的最佳选择只是建立一个错误数组——它不需要是全局的,只需从验证方法或作为Validator对象的成员返回即可。

消息接下来会发生什么部分取决于个人风格,部分取决于代码的结构。您可能只想将它们直接传递到模板,只有在没有要显示的模板时才继续。但你可能会发现,这需要在多个地方检查"返回的错误,不要继续",在这种情况下,抛出一个包含消息的异常可能更有意义,因为你知道在那里和catch之间不会运行任何代码。