Laravel實踐-自定義全局異常處理

在做API時,需要對一些異常進行全局處理
比如添加用戶執行失敗時,需要返回錯誤信息

// 添加用戶
$result = User::add($user);
if(empty($result)){
    throw new ApiException('添加失敗');
}

API 回復
{
    "msg" : "添加失敗",
    "data" : "",
    "status" : 0 // 0為執行錯誤
}

那么我們就需要添加一個全局異常處理,專門用來返回錯誤信息

步驟

  • 添加異常處理類
  • 修改laravel異常處理
1.添加異常處理類
./app/Exceptions/ApiException.php
<?php
namespace App\Exceptions;

class ApiException extends \Exception
{
    function __construct($msg='')
    {
        parent::__construct($msg);
    }
}
2.修改laravel異常處理
./app/Exceptions/Handler.php

// Handler的render函數
public function render($request, Exception $e)
{
    // 如果config配置debug為true ==>debug模式的話讓laravel自行處理
    if(config('app.debug')){
        return parent::render($request, $e);
    }
    return $this->handle($request, $e);
}

// 新添加的handle函數
public function handle($request, Exception $e){
    // 只處理自定義的APIException異常
    if($e instanceof ApiException) {
        $result = [
            "msg"    => "",
            "data"   => $e->getMessage(),
            "status" => 0
        ];
        return response()->json($result);
    }
    return parent::render($request, $e);
}

大功告成....

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容