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

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章