有很多时候我们需要有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);
    }
}