重寫laravel 異常拋出處理


所有異常錯誤都由類App\Exceptions\Handler處理,該類包含兩個方法:report和render。 
這里我們只看render方法,該方法會將異常渲染到HTTP響應中,就是說上面的錯誤信息就是通過這個方法展示的。

public function render($request, Exception $e)
{

    /* 錯誤頁面 */
    if ($e instanceof HttpException) {
            $code = $e->getStatusCode();

            if (view()->exists('errors.' . $code)) {
                $message  = $e->getMessage();
                return response()->view('errors.' . $e->getStatusCode(), ['message'=>$message], $e->getStatusCode());
            }
     }
     return parent::render($request, $e);
   }

  或者如下處理

protected $dontReport = [
    //     AuthorizationException::class,
    //     HttpException::class,
    //     ModelNotFoundException::class,
    //     ValidationException::class,
    ];
public function render($request, Exception $e)
    {
        if (getenv('APP_DEBUG')) {
            return parent::render($request, $e);
        }else{
            switch ($e){
               case ($e instanceof HttpException):

                   
                   //自定義處理異常,此處我們返回一個404頁面
                   return view('errors.404');
                   break;

               default:
               
                   //返回laravel默認的錯誤頁面
                   return parent::render($request, $e);

           }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM