91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

yii2如何實現自定義錯誤處理的方法

發布時間:2021-01-13 14:41:09 來源:億速云 閱讀:291 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關yii2如何實現自定義錯誤處理的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在 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如何實現自定義錯誤處理的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白河县| 凤庆县| 当阳市| 芷江| 肃宁县| 佛坪县| 宽甸| 西峡县| 普兰县| 万山特区| 崇阳县| 平定县| 航空| 龙陵县| 出国| 沂水县| 华池县| 信阳市| 永靖县| 杭锦后旗| 新乡县| 郴州市| 措勤县| 临漳县| 苍南县| 岐山县| 景谷| 达拉特旗| 文水县| 乌拉特前旗| 共和县| 襄汾县| 南郑县| 娄底市| 望江县| 乌拉特前旗| 九台市| 青铜峡市| 沁阳市| 丰台区| 固原市|