首頁 >php框架 >ThinkPHP >終於成功使用whoops接手tp6的異常處理!

終於成功使用whoops接手tp6的異常處理!

藏色散人
藏色散人轉載
2021-03-05 14:00:592818瀏覽

下面由thinkphp教學專欄為大家介紹使用whoops接管tp6的異常處理的方法,希望對需要的朋友有幫助!

告別ThinkPHP6的異常頁面, 讓我們來擁抱whoops!

春節期間熟悉了TP6, 也寫了一個TP6的博客程序,但係統的異常頁面實在另外頭疼,很多時候無法查看到是哪行程式碼出的問題。

所以就特別的想把whoops引進來,經過一系列的研究,終於找到了解決的辦法:

1. 透過composer安裝whoops

執行指令:  composer require filp/whoops

注意:composer引進的檔案如果有語法錯誤,需要提前把語法錯誤處理好才能進行安裝,否則一直報錯。

2. 使用whoops接管tp6的例外處理

在/app/ExceptionHandle.php檔案的render()方法中加入如下程式碼:

// 添加自定义异常处理机制
if (ENV('APP_DEBUG')) {
    // 如果是HttpResponseException异常则原样输出
    // JUMP插件里的success,error和result方法均返回的是HttpResponseException异常
    if ($e instanceof HttpResponseException) {
        return $e->getResponse();
    }

    // Whoops 接管请求异常
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
    return Response::create(
        $whoops->handleException($e),
        'html',
        500
    );
}

如下圖:

終於成功使用whoops接手tp6的異常處理!

3. 看看結果吧

我在部落格首頁的index方法中寫入了一個不存在的函數:

終於成功使用whoops接手tp6的異常處理!

刷新頁面一看, 妥了

終於成功使用whoops接手tp6的異常處理!

OK. 熟悉的whoops又回來了.

4. 後記

為了在thinkphp6中使用whoops, 我又認真的看了一遍PHP7中的異常機制,終於是把whoops給引進來了.

在學習異常處理的過程中, 我也發現在PHP7中應該使用try()catch()來進行業務處理, 而不是再使用if()else()了.

後續我會單獨寫篇文章來講述我在研究PHP7的異常中獲得的經驗.

也希望大家能繼續關注我的博客http://laoliu.pro

原文連結:http://laoliu.pro/php/6.html

以上是終於成功使用whoops接手tp6的異常處理!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除