这篇文章给大家分享的是有关yii2如何实现自定义错误处理的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
成都创新互联公司是专业的特克斯网站建设公司,特克斯接单;提供网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行特克斯网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
在 Yii2 使用中,我们发现一但程序出现错误,Yii2 就能自动显示其专用的错误提示界面,和我们写原生态时出现的错误提示界面完全不一样。
它究竟是怎么做到的呢:是在哪里设置监听的?亦或在哪里用的try catch?”。 其实 PHP 有自己专用的错误处理 API, 当程序出现问题时,可以自动调用指定函数。而 Yii2 正是利用这一点,在其启动的时候,使用 PHP 内置的 set_error_handler 将自己的错误处理注册进步并关闭 PHP 自身的错误显示。
Yii2 错误自定义处理
在 官方教程 中,它告诉我们要开启自定义的错误,需要进行如下配置组件:
return [ // ... 'components' => [ // ... 'errorHandler' => [ 'errorAction' => 'site/error', ], ] // ... ];
Yii2 错误核心处理方法
在 Yii2 错误自定义处理 中我们了解了 Yii2 错误注册的原理并知道错误的发生后,Yii2 将调用 yii\web\ErrorHandler 类对象的 handleException 和 handleError 方法。
其实 yii\web\ErrorHandler 类中并没有 handleException 和 handleError 方法,但是在其基类 yii\base\ErrorHandler 有,这两个函数最终都将调用 yii\web\ErrorHandler 的 renderException 方法,代码如下:
# yii\web\ErrorHandler /** * Renders the exception. * @param \Exception $exception the exception to be rendered. */ protected function renderException($exception) { // ... // 注意:控制错误是否能自定义的关键 // !YII_DEBUG 表示了如果你现在是在 Debug 模式下,那么不能自定义错误 // 即使你配置了组件的 'errorHandler' => ['errorAction' => 'site/error'] 参数 $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException); // 传递到自定义错误处理方法 if ($useErrorView && $this->errorAction !== null) { $result = Yii::$app->runAction($this->errorAction); if ($result instanceof Response) { $response = $result; } else { $response->data = $result; } } // ... }
在最终的错误显示方法 renderException 我们可以看出:自定义的错误需要在非 DEBUG 模式下才能生效
感谢各位的阅读!关于“yii2如何实现自定义错误处理的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!