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

标签 php exception-handling error-handling

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

但是,我遇到了使它变得更通用的问题。我不想为我编写的每个类都编写一个单独的处理程序(特别是因为该代码中的绝大多数对于每个类都是相同的)。但是,在同一处理程序中让整个项目的每个错误都感觉非常糟糕。
我得到的最接近可以接受的解决方案是为我要处理错误的每个类编写ErrorException的子类,并在每个类中存储消息。但是即使这样,我也可能会出错(我认为那不是存储默认错误消息的适当位置)。有没有一种我无法找到的普遍接受的方法?还是这些方法中的一种实际上是通常完成的方法?还是有多个可根据项目规模进行扩展的解决方案?

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

编辑2:决定使用一个配置文件,该文件包含将引发错误的每个类的错误消息,然后引发错误的类的名称定义了加载哪个配置文件以获取与错误号关联的消息列表。这也使我可以轻松定义应该记录的消息,而不是应该发送给用户的消息(本质上是特定消息还是通用消息)。
我想我会将其标记为“已回答”或“某些”,但是如果我做错了任何事情,请随时告诉我,我们将不胜感激。

最佳答案

决定使用一个配置文件,该配置文件包含将引发错误的每个类的错误消息,然后引发错误的类的名称将定义加载哪个配置文件以获取与错误号关联的消息列表。这也使我可以轻松定义应该记录的消息,而不是应该发送给用户的消息(本质上是特定消息还是通用消息)。
更具体地说,我可能会使用一个ini文件,该文件定义了一个数组数组,其中每个数字都包含该错误号的错误消息数组。然后使用带有抛出错误代码的foreach返回错误消息。

关于php - 如何实现通用PHP异常处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913683/

相关文章:

javascript - jQuery AJAX 文件上传 PHP

PHP 返回错误消息和 false

java - 如何捕获 "Unable to sendViaPost to url"?

c# - 无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。与实体数据源

bash - 如果用户错误地调用脚本,使 Bash 脚本退出并打印错误消息

php - PHP正则表达式更改YouTube链接到视频

php - 链接表上的 where 条件 Laravel 5.4

php - 警告 : session_start(): failed: Permission denied (13)

java - 线程 “main”中的异常java.lang.IllegalStateException : The driver executable is a directory

matlab - 不断收到无效的表达错误