如何实现通用的php异常处理程序

时间:2012-03-28 18:38:06

标签: php exception-handling error-handling

如php文档所示,可以创建自己的exception handler。我认为这是在我正在处理的项目中处理用户生成的错误和异常的合理方法。通过研究,我在实现一个特定的一个类中取得了相当大的进展,仅用于一个类,包括使用ErrorException(来自第一个答案)和确保为error levels返回false无法处理
然而,我遇到了一个让它变得更通用的墙。我不想为我编写的每个类编写一个单独的处理程序(特别是因为绝大多数代码对于每个代码都是相同的)。然而,在同一个处理程序中为整个项目产生每一个错误都是非常糟糕的做法。

我得到的最接近的解决方案是为每个我想处理错误的类编写一个ErrorException的子类,并在每个类中存储消息。但即便如此,我可能会错误地认为(我不认为这是存储默认错误消息的正确位置)。

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

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

编辑2:决定使用包含每个将抛出错误的类的错误消息的配置文件,然后抛出错误的类的名称定义加载的配置文件以获取与之关联的消息列表错误号码。这也允许我轻松定义应该记录的消息,而不是应该发送给用户的消息(基本上是特定消息与通用消息)。

我想我会将此标记为已回答或其他内容,但如果我做错了,请随时告诉我,我们将不断提供帮助。

1 个答案:

答案 0 :(得分:0)

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

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