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


How to implement generic php exception handler

如php文档所示,可以创建自己的异常处理程序。我认为这是在我正在进行的整个项目中处理用户生成的错误和异常的合理方法。通过研究,我在实现特定的错误和例外方面取得了相当大的进展,只针对一个类,包括使用ErrorException(从第一个答案开始)和确保对我无法处理的错误级别返回false

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

我最接近于一个可以接受的解决方案是为我想要处理错误的每个类编写一个子类ErrorException,并在每个类中存储消息。但即便如此,我可能还是错了(我认为这不是存储默认错误消息的合适地方)

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

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

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

我想我会把这个标记为已回答或其他什么,但如果我做错了什么,请随时告诉我,我们总是很感激你的帮助。

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

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