1. 程式人生 > >Laravel 中的異常處理器和HTTP異常處理例項教程

Laravel 中的異常處理器和HTTP異常處理例項教程

Laravel應用中所有的異常都通過 App\Exceptions\Handler 進行處理,下面我們先簡單分析下給異常處理器類的屬性和方法:

$dontReport屬性

protected $dontReport = [
    HttpException::class,
    ModelNotFoundException::class,
TokenMismatchException::class, //引入totken類
];


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