lucinda / errors
引导错误并通过报告者和渲染器处理它们
v1.2.2
2018-04-27 13:58 UTC
README
与任何其他脚本语言一样,PHP有两种类型的错误
- 语法错误:脚本中的语言错误会导致立即失败。这些错误会导致脚本立即退出,而不经过可听见的关闭阶段。幸运的是,它们可以通过使用现代IDE(如Eclipse)轻松处理,该IDE可以突出显示语法错误。
- 执行错误:在正确编写的脚本执行过程中出现的错误。PHP识别以下类型的执行错误
- 致命错误:自处理错误导致脚本退出,同时显示消息并记录日志(例如:调用不存在的函数)
- 非致命错误:自处理错误导致脚本继续执行,同时显示消息并记录日志(例如:访问数组中不存在的条目)
- 异常:用户处理的错误,可以手动抛出和处理
理想情况下,错误应该抛出一个可由用户处理的异常(以便从单个点控制整个错误处理过程),但直到版本7.0,用户必须手动将自处理错误和未捕获的异常定向到用户定义的异常,以便实现错误流的单一控制点。尽管这个功能很原始,但它为AOP层提供了一个钩子,该钩子可以非破坏性地监听应用程序的交叉关注点(错误),同时保持所有其他组件严格专注于其目的,而无需关注错误处理。
ErrorAPI提供了一层薄薄的抽象(骨架)以实现统一错误处理(将所有未捕获的错误重定向到错误的前端控制器)。其控制点是ErrorHandler类,能够注册报告者(错误将被记录到的存储介质)和渲染器(将执行对调用者的响应的实体),然后通过将任何异常委派给注册的报告者和渲染器来处理任何异常。为了处理PHP执行错误,API打开了对所有PHP错误的报告,然后将它们重定向到PHPException类,通过原生的set_error_handler和register_shutdown_function。从那时起,每个PHP执行错误都将自动抛出PHPException,然后委派给必须事先注册的ErrorHandler实例。