PHP 错误处理

标签 php

提前谢谢大家。

我目前正在调整/改进我为公司从头编写的 MVC 框架。它相对较新,因此肯定是不完整的。我需要将错误处理合并到框架中(一切都应该可以访问错误处理)并且它应该能够处理不同类型和级别的错误(用户错误和框架错误)。我的问题是最好的方法和最好的机制是什么?我知道 PHP 5 异常处理和 PEAR 的不同错误机制,但我从未使用过它们中的任何一个。我需要一些高效且易于使用的东西。

创建我自己的错误处理或使用已有的东西会更好吗?欢迎任何建议、提示和问题。我最终认为以某种方式向 PHP 注册错误处理程序是一种甜蜜,这样我只需要抛出错误,然后决定如何处理它以及是否继续。

编辑:抱歉,我应该提供有关我想要记录的错误类型的更多详细信息。我希望记录 2 种主要类型的错误:用户和框架。

对于用户错误,我指的是错误的 URL (404)、非法访问受限页面等。我知道我可以重新路由到主页或直接跳出一个 JavaScript 对话框,但我希望能够优雅地处理这些错误并在它们变得明显时添加更多用户错误。

我所说的框架错误是指无法连接到数据库、有人意外删除了数据库表或以某种方式删除了文件等。

此外,我将负责开发和实时服务器处理。

最佳答案

I would ultimately think it sweetness to somehow register the error handler with PHP so that I would just need to throw the error and then decide what to do with it and whether to continue.

您可以使用 set_error_handler() 做到这一点和 set_exception_handler() .

错误处理没有“唯一正确的方法”,但这里有一些事情需要考虑。

  • trigger_error() 和throw new Exception 类似,都是立即跳出当前执行,只有trigger_error() 是不可捕获的。
  • 您希望如何在开发环境中处理错误(显示在屏幕上?)与在生产环境中(记录并通过电子邮件发送?)
  • 您可以使用上述函数从本质上将错误“转换”为异常,反之亦然
  • 并非所有错误类型都可以使用自定义错误处理程序来处理

关于PHP 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081061/

相关文章:

php - 拆分数组值,哪个是给数据的最佳路径?

php - 如何使用SimpleXML在XML文件中获得特定标签的最高值(value)?

php - Magento 集合分组和按值范围限制

php - 如何将 Redis 用于 Postgresql 的 LRU 缓存?

php - MySQL 日期比较返回不同的结果

php - 如何检查特定表中是否插入了新行

javascript - d3.js 在变换行中给出 NAN

php - SQL语法错误

php - UTF8 中的制表符字符

php - MYSQL 触发器不工作。不知道为什么