【问题标题】:PHP Exceptions, Errors and Giving User FeedbackPHP 异常、错误和给用户反馈
【发布时间】:2015-04-02 23:49:44
【问题描述】:

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

通常我只检查一个字段,如果它没有设置然后回显一个错误。这很好,但我想更优雅地处理事情。我一直在阅读有关 throw / try / catch 的文章,并且我了解如何使这些工作,但我不确定何时应该使用这些。

让我更具体地说明我想做什么。

所以我有 3 个字段:

  • 名字
  • 姓氏
  • 电子邮件

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

我假设 throw / catch / try 可以做到这一点,但我一次只能抛出 1 个错误。我想做的是一次向用户显示所有错误。

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

【问题讨论】:

  • “我选择这些字段...有意义吗?” - 整个段落完全有道理。为什么不编写代码并尝试一下?

标签: php error-handling exception-handling


【解决方案1】:

我看到的一个(可能有点极端)经验法则是,您应该只在您对程序退出感到满意的情况下使用异常。这部分是因为如果你没有捕捉到异常,那将会发生;但它也强调了异常不应用于“一切照旧”、流程控制、情况的想法。

正如你所发现的,一旦你抛出一个异常,你就会从你正在做的任何事情中解脱出来,所以你不能同时创建多个异常。因此,验证的最佳选择是简单地构建一个错误数组 - 它不需要是全局的,只需从 validate 方法返回它,或者作为 Validator 对象的成员。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多