當前位置:首頁 > PHP教程 > php高級應用 > 列表

Laravel中錯誤與異常處理的用法示例

發布:smiling 來源: PHP粉絲網  添加日期:2018-11-18 14:18:55 瀏覽: 評論:0 
在本文中,我們將探討 Laravel Web 框架中最重要和最少討論的功能之一 - 異常處理。 Laravel 帶有一個內置的異常處理程序,可以讓您輕松地以友好的方式報告和呈現異常。

Laravel 自帶錯誤和異常處理,AppExceptionsHandler 負責上報異常和如何返回內容,以及未登錄的處理。

AppExceptionsHandler 位于 appExceptionsHandler.php,下面介紹這個類的屬性和用法。好了,話不多說了,來一起看看詳細的介紹吧

忽略異常

在 $dontReport 中可以定義忽略的異常類名:

  1. protected $dontReport = [ 
  2.  \Illuminate\Auth\AuthenticationException::class
  3.  \Illuminate\Auth\Access\AuthorizationException::class
  4.  \Symfony\Component\HttpKernel\Exception\HttpException::class
  5.  \Illuminate\Database\Eloquent\ModelNotFoundException::class
  6.  \Illuminate\Validation\ValidationException::class
  7. ]; 

這些異常就不會經過 report 方法。

幾個重要方法

主要介紹這三個方法,report,render 和 unauthenticated 的用法。

report方法

report 方法可以用來記錄日志,可以根據不同的異常類型(包括自定義異常類型),如 ClientException,ConnectException 定制不同的日志級別和日志內容。

  1. if ($exception instanceof ABCException) { 
  2.  Log::emergency('ABC異常'$context); 
  3. else if ($exception instanceof HeheException) { 
  4.  Log::info('Hehe異常'$context); 

report 方法沒有返回值,也不應該在這里中斷程序。

render方法

render 方法可以根據不同的異常類型,返回不同的數據。如:

  1. if (get_class($exception) == 'Exception' || $exception instanceof NotAllowedException) { 
  2.  return response()->json(['message' => $exception->getMessage()], 400); 
  3. elseif ( $exception instanceof ValidationException) { 
  4.  return response()->json(['message' => '校驗失敗''errors'=> $exception->validator->errors()], 400); 
  5. unauthenticated 

在訪問需要登錄態的頁面時,用戶未登錄就會進入這個方法進行處理,舉個例子說明:

  1. protected function unauthenticated($request, AuthenticationException $exception
  2.  if ($request->expectsJson()) { 
  3.   return response()->json(['error' => 'Unauthenticated.'], 401); 
  4.  } 
  5.    
  6.  //如果是后臺頁面未認證,跳轉到后臺登陸頁面 
  7.  $guard = $exception->guards(); 
  8.  if (in_array('admin'$guard)) { 
  9.   return redirect()->guest('/admin/login'); 
  10.  } //phpfensi.com 
  11.    
  12.  return redirect()->guest('login'); 

如果是返回 json,則統一返回格式。

默認情況下返回前臺的登錄頁,如果是訪問后臺頁面未登錄,則跳轉到后臺登錄頁。

官方文檔

Laravel 5.6

https://laravel-china.org/docs/laravel/5.6/errors/1373

Tags: Laravel 錯誤 異常處理

分享到:

福利彩票25选5开奖结果