一直没有时间整理之前的笔记,现在打算每个星期花点时间整理一下,以存根
错误(Error)
php程序自身不能正常的执行,根据严重情况分为多种错误等级
- 致命错误:语法、未定义调用(对象、函数)等,立即中断流程执行,属于程序严重bug, 必须立即修复
- 其它错误:php执行未达预期的结果, 程序流程继续执行,潜在bug需要记录错误,并修复
- 用户错误:使用trigger_error主动抛出,不中断程序执行流程
错误处理机制
- 非致命错误:set_error_handle(error_function, error_types)
- 致命错误:程序只能中止执行,在中止前可以通过 注册 register_shutdown_function, 使用 error_get_last获取相关错误信息,以便于记录查阅
- 记录错误日志: 可以使用error_reporting来设置当前脚本的错误报告级别,在php.ini配置或通过ini_set()函数设置log_errors = on, error_log = LOG_FILE来记录错误日志
异常(Exception)
大多数应用于应用逻辑未达预期,中断当前业务流程处理,直到将流程控制权交给适合的错误处理者,利于程序多层结构,每层处理自己能处理的错误,避免各层对错误大量if判断处理的存在,便于程序将正常处理代码与错误处理代码进行分离
异常处理机制
- 立即处理:在当前异常发生后立即处理,及时采取补救措施不影响业务逻辑的完整性, 比如为保证数据一至性等需求
- 上层处理:处理当前层能处理的错误
- 集中处理:最后一道处理异常的机会, 比如集中记录异常,显示错误信息提示,根据异常类型作出合适的跳转等,也可通过set_exception_handler()捕获未处理的异常