国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

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

2024-05-04 21:50:48
字體:
供稿:網(wǎng)友
在本文中,我們將探討 Laravel Web 框架中最重要和最少討論的功能之一 - 異常處理。 Laravel 帶有一個內(nèi)置的異常處理程序,可以讓您輕松地以友好的方式報告和呈現(xiàn)異常。

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

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. ]; 

這些異常就不會經(jīng)過 report 方法。

幾個重要方法

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

report方法

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

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

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

render方法

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

  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 

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

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

如果是返回 json,則統(tǒng)一返回格式。

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

官方文檔

Laravel 5.6

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台东市| 河曲县| 房产| 甘肃省| 岚皋县| 东山县| 怀宁县| 阜阳市| 高陵县| 庆安县| 石棉县| 大姚县| 洪湖市| 连城县| 湟中县| 慈利县| 武夷山市| 嘉义县| 张北县| 广饶县| 顺平县| 武平县| 家居| 昭觉县| 长宁县| 长汀县| 绥化市| 阳江市| 兰溪市| 河东区| 弥勒县| 肥乡县| 靖西县| 盘山县| 龙泉市| 观塘区| 武汉市| 辽中县| 神农架林区| 闵行区| 梁山县|