重写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); } } }