日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Laravel中如何進行異常處理

這篇文章主要介紹“Laravel中如何進行異常處理”,在日常操作中,相信很多人在Laravel中如何進行異常處理問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Laravel中如何進行異常處理”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)專注于賓陽企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。賓陽網(wǎng)站建設(shè)公司,為賓陽等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

基本配置

在開始研究異常處理類之前,讓我們先來看看幾個和異常相關(guān)且很重要的參數(shù)配置。

打開 config/app.php 文件,并仔細(xì)的看看下面的代碼片段。

...
...
/*
|--------------------------------------------------------------------------
| 應(yīng)用的調(diào)試模式
|--------------------------------------------------------------------------
|
| 當(dāng)引用處于調(diào)試模式,將會顯示錯誤產(chǎn)生式的詳細(xì)堆棧信息
| 如果禁用,則只顯示一個簡單的錯誤頁面
|
*/

'debug' => env('APP_DEBUG', false),
...
...

從參數(shù)的名稱可以猜到,如果設(shè)置為 TRUE,將有利于我們調(diào)試應(yīng)用產(chǎn)生的錯誤。默認(rèn)值由 .env 環(huán)境變量配置文件中的  APP_DEBUG 參數(shù)指定。

在開發(fā)環(huán)境下,建議你將它設(shè)置為 TRUE ,這樣,通過清晰的錯誤堆棧信息,能很快的定位錯誤產(chǎn)生的原因并修復(fù)。 另外,當(dāng)處于正式環(huán)境是,我們需要通過環(huán)境變量的配置項來關(guān)閉它,當(dāng)錯誤產(chǎn)生式將只顯示通用的提示頁面。

除了將錯誤顯示在頁面上,Laravel 也允許你將錯誤記錄到日志文件中?,F(xiàn)在,讓我們來看看日志相關(guān)的配置,打開 config/app.php 文件,并仔細(xì)的看看下面的代碼片段。

...
...
'log' => env('APP_LOG', 'single'),

'log_level' => env('APP_LOG_LEVEL', 'debug'),
...
...

Laravel 框架中,是使用 Monolog 庫來記錄日志的。你可以通過上面的配置項來配置 Monolog 庫。

默認(rèn)的日志文件保存路徑為 storage/logs/laravel.log,通常情況下,你無需更改它。與此同時,你可以通過  APP_LOG_LEVEL 來指定需要被記錄到日志文件的錯誤級別。

前面介紹了異常和日志的基本配置。

接下來,我們看看 Laravel 應(yīng)用默認(rèn)的異常處理類。打開 app/Exceptions/Handler.php 文件.

expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        return redirect()->guest(route('login'));
    }
}

上面的處理類主要包含2個功能:報告和顯示所有的異常信息。

讓我們仔細(xì)看一眼 report 方法。

/**
 * 報告或記錄一個異常。
 *
 * 這是一個將異常發(fā)送給 Sentry 和 Bugsnag 等機構(gòu)的好時機。
 *
 * @param  \Exception  $exception
 * @return void
 */
public function report(Exception $exception)
{
    parent::report($exception);
}

report 方法用于將錯誤記錄到日志文件中。同時,關(guān)注一項重要的 dontReport 屬性,它列出了所有不應(yīng)該被記錄到日志的異常類別。

接下來,我們介紹 render 方法。

/**
 * 將異常渲染至 HTTP 響應(yīng)值中。
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}

如果說 report 方法是用于記錄或報告錯誤,那么 render 方法是用于將錯誤渲染顯示在屏幕上。事實上,當(dāng)異常發(fā)生時,這個方法決定了哪些內(nèi)容將被展示給用戶。

render 方法也允許你針對不同類別的錯誤自定義響應(yīng)值,這部分內(nèi)容我們將在下一章學(xué)習(xí)。

最后, unauthenticated 方法處理了 AuthenticationException 異常,你能夠在此決定當(dāng)用戶訪問了一個未授權(quán)頁面時所展示的內(nèi)容。

自定義異常類

在這一節(jié),我們將創(chuàng)建一個自定義異常類,用于處理 CustomException 類別的異常。創(chuàng)建自定義異常類背后的想法是更輕松地管理自定義異常同時顯示自定義響應(yīng)。

開始著手創(chuàng)建一個文件 app/Exceptions/CustomException.php ,內(nèi)容如下所示。

view(
                'errors.custom',
                array(
                    'exception' => $this
                )
        );
    }
}

重要的是需要注意 CustomException 類必須繼承核心 Exception 類。為了演示用途,我們僅僅討論了 render 方法,但顯然你也能夠自定義修改 report 方法。

正如你看到的,在樣例中我們將用戶重定向至 errors.custom 錯誤頁面。通過這種方式,你能夠為特定類型的異常實現(xiàn)自定義的錯誤頁面。

當(dāng)然,我們需要創(chuàng)建一個關(guān)聯(lián)的視圖文件 resources/views/errors/custom.blade.php。

Exception details: {{ $exception->getMessage() }}

登錄后復(fù)制

這是一個相當(dāng)簡單的視圖文件,只顯示一行錯誤消息,不過你也可以按照自己希望的方式設(shè)計這個視圖。

我們也需要在 app/Exceptions/Handler.php 文件的 render 方法中進行一些修改,保證我們的自定義異常類能夠被調(diào)用。讓我們將 app/Exceptions/Handler.php 文件中的 render 方法替換為以下內(nèi)容。

...
...
/**
 * 將異常渲染至 HTTP 響應(yīng)值中。
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $exception)
{
    if ($exception instanceof \App\Exceptions\CustomException)  {
        return $exception->render($request);
    }

    return parent::render($request, $exception);
}
...
...

正如你所看到的,我們會在 render 方法中首先檢查異常的類型。如果異常的類別是 \App\Exceptions\CustomException ,我們將調(diào)用這個類的 render 方法。

一切準(zhǔn)備就緒?,F(xiàn)在我們創(chuàng)建一個控制  app/Http/Controllers/ExceptionController.php  來測試自定義的異常類。

當(dāng)然,你需要先在 routes/web.php 文件中添加相關(guān)的路由,就像下面一樣。

// Exception routes
Route::get('exception/index', 'ExceptionController@index');

之后,你可以瀏覽 http://your-laravel-site.com/exception/ind... 地址來查看是否和預(yù)期的一樣。一切正常的話,頁面將顯示我們前面配置 errors.custom 視圖。

到此,關(guān)于“Laravel中如何進行異常處理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
當(dāng)前文章:Laravel中如何進行異常處理
本文網(wǎng)址:http://www.dlmjj.cn/article/piiech.html