亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

诸暨市| 明水县| 长治市| 大竹县| 玉环县| 安多县| 乌苏市| 汉川市| 神池县| 桃源县| 康平县| 石楼县| 吴川市| 常山县| 白朗县| 辉南县| 肇庆市| 苏尼特右旗| 洛阳市| 和平区| 三原县| 滕州市| 桓台县| 内丘县| 土默特右旗| 横山县| 合山市| 榆林市| 贞丰县| 梁山县| 武鸣县| 襄垣县| 广河县| 资讯| 绩溪县| 高阳县| 乌拉特中旗| 张家港市| 康马县| 广南县| 赫章县|