hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - YII - 正文 请牢记本站网址www.sosophp.cn

yii2自定义错误处理【yii框架教程】,yii2

2019-12-14YII搜搜PHP网32°c
A+ A-

在 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网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
yii2自定义错误处理【yii框架教程】,yii2

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: