【问题标题】:How to implement generic php exception handler如何实现通用 php 异常处理程序
【发布时间】:2012-04-12 09:49:51
【问题描述】:

如 php 文档所示,是否可以创建自己的 exception handler。我认为这是在我正在处理的整个项目中处理用户生成的错误和异常的合理方法。通过研究,我在实现一个特定的类方面取得了相当大的进展,仅针对一个类,包括使用ErrorException(来自第一个答案)并确保为我无法处理的error levels返回false .

然而,我遇到了一堵墙,使它更通用。我不想为我编写的每个类编写一个单独的处理程序(特别是因为绝大多数代码对于每个类都是相同的)。然而,将整个项目的每一个错误都放在同一个处理程序中感觉是一种非常糟糕的做法。

我最接近可接受的解决方案是为每个我想要处理错误的类编写一个 ErrorException 的子类,并在每个类中存储消息。但即使这样,我也可能做错了(我认为这不是存储默认错误消息的合适位置)。

是否有一种普遍接受的方式来做到这一点,但我一直无法做到找到?还是其中一种方式实际上是通常的方式?还是有多种可根据项目规模进行扩展的解决方案?

编辑:刚刚意识到我可以用重用的代码编写一个通用的 Exception_Handler 并为我遇到的每组错误扩展它(对我来说是真正的 Herp 时刻),但我似乎仍然应该在同一个地方处理所有错误。如果我完全错了,请告诉我。

编辑 2:决定使用一个配置文件,其中包含每个将引发错误的类的错误消息,然后引发错误的类的名称定义加载哪个配置文件以获取消息列表与错误号相关联。这也让我可以轻松定义应该记录的消息,而不是应该发送给用户的消息(本质上是特定消息与通用消息)。

我想我会将此标记为已回答或其他内容,但如果我做错了什么,请随时告诉我,我们将不胜感激。

【问题讨论】:

    标签: php exception-handling error-handling


    【解决方案1】:

    决定使用包含每个将引发错误的类的错误消息的配置文件,然后引发错误的类的名称定义加载哪个配置文件以获取与错误号相关的消息列表。这也让我可以轻松定义应该记录的消息,而不是应该发送给用户的消息(本质上是特定消息与通用消息)。

    更具体地说,我可能会使用一个定义数组数组的 ini 文件,其中每个数字都包含该错误号的错误消息数组。然后使用带有抛出错误号的 foreach 来返回错误消息。

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      相关资源
      最近更新 更多