Laravel的报错处理

有很多时候我们需要有404 500 这类的错误页面,在逻辑层里写这些又有些太繁琐,干脆从上游去搞一下

在 app/exceptions/handler.php中

判定$e是属于 http异常还是其他的类似model或者pdo异常,这样就根据异常的类型返回对应的页面,http异常就返回404(其实可以按照状态码分好多) 服务器异常不想显示报错信息就返回一个页面这样的

如果为了方便开发时查看报错信息,需要再添加一层输出debug的配置判定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 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)
{
// return parent::render($request, $e);

if(Config('app.debug')){
if ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
}
return parent::render($request, $e);
}


if($e instanceof NotFoundHttpException) {
return response()->view('errors.404', ['message'=>'找不到页面'], 404);
} else {
return response()->view('errors.500', ['message'=>'服务器发生未知错误'], 500);
}
}