类别:YII / 日期:2019-12-14 / 浏览:205 / 评论:0

在 Yii2 运用中,我们发明一但顺序涌现毛病,Yii2 就能够自动显现其专用的毛病提醒界面,和我们写原生态时涌现的毛病提醒界面完整不一样。
它究竟是怎样做到的呢:是在那里设置监听的?亦或在那里用的try catch?”。 (引荐进修:yii框架)
实在 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自定义毛病处置惩罚的细致内容,更多请关注ki4网别的相干文章!