![banner](/_nuxt/img/banner.91daa59.gif)
Laravel 异常处理
发布时间:2019-01-09
Laravel应用中所有的异常都通过 App\Exceptions\[Handler](http://laravelacademy.org/tags/handler "View all posts in Handler")
进行处理,下面我们先简单分析下给异常处理器类的属性和方法:
laravel中针对具体的处理逻辑,可能存在的错误。try{} catch(Exception $e) {}捕获处理对应的错误。针对大量出现的可能存在异常,可以使用全局异常捕获,如NotFoundException ,ModelNotFoundException
在\App\Exception\Handle中,对于不需要处理的异常添加到 $dontReport = []。其中report方法一般是对应的分开记录日志处理,render方法是对应的异常http响应处理。
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that should not be reported.
*
* @var array
*/
protected $dontReport = [
AuthorizationException::class,
HttpException::class,
ModelNotFoundException::class,
ValidationException::class,
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $e
* @return void
*/
public function report(Exception $e)
{
return parent::report($e);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
if ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
}
if ($e instanceof \ErrorException) {
return xxx;
}
}
}
render方法
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
//TODO 这里一条自定义http错误自动跳转到首页
if (getenv('APP_ENV') == 'production' && $e instanceof HttpException) {
Log::error($e);
return Redirect::to('admin/dashboard');
}
if (getenv('APP_ENV') == 'production' && $e instanceof TokenMismatchException) {
Log::error($e);
if ($request->ajax()) {
return Response::json(
[
'status' => 'failed',
'error' =>
[
'status_code' => 401,
'message' => '操作未完成,系统加载失败,重新登录或者刷新当前页面!'
]
]
);
}
return Redirect::to('admin/logout');
}
return parent::render($request, $e);
}
热门文章
行业早报2019-01-15nginx+php 开启PHP错误日志
行业早报2019-01-15为什么你说了很多遍,对方还是不听? 2018-09-25
行业早报2019-01-15【Ruby on Rails实战】3.1 宠物之家论坛管理系统介绍
行业早报2019-01-15从凡人到筑基期的单片机学习之路
行业早报2019-01-15jmeter单台大数量并发
行业早报2019-01-15Go在Windows下开发环境搭建
行业早报2019-01-15ES-科普知识篇
行业早报2019-01-15Hbase 之 由 Zookeeper Session Expired 引发的 HBASE 思考
行业早报2019-01-15谷歌大脑专家详解:深度学习可以促成哪些产品突破?
行业早报2019-01-15EventLoop
相关推荐