PHP的错误:属于PHP自身问题. 如语法错误,环境问题.在程序编译的时候无法通过.错误级别warming,notice; 如zhiin_array('1')只传一个参数;
PHP异常 一般是业务逻辑上出现不符合预期的, php无法自动捕获异常,必须手动抛出
注:异常监听中发出PHP错误不会催发异常
PHP中set_exception_handler和set_error_handler.可以重写报错输出
YII:中错误处理机制:DEBUG重写输出
1. main.php
'errorHandler' => ['errorAction'=>'site/error']
2.application中注册error和exception处理。
$this->getErrorHandler()->register()
3. 因此registerErrorHandler($config) 最终的结果是执行了ErrorHandler类中的register()方法。
在使用中:
1.redis乐观锁判断处理后
2.监听异常处理try cache{ 锁释放 }
3.最后结尾:锁释放
在YII php错误被重写,无法释放
执行过程中发送错误,就会产生死锁
解决:1.redis锁设置生命周期 2.加入注册器中,在错误处理中释放掉注册器的锁