所有異常錯誤都由類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); } } }